gpt4 book ai didi

sequelize.js - 左排除加入 Sequelize

转载 作者:行者123 更新时间:2023-12-04 23:15:45 28 4
gpt4 key购买 nike

我有两张表,其中一张表具有另一张表的 ID。 1:1 关系。
所以像

EventFeedback
somePrimaryKey
userEventID
UserEvent
userEventID

Sequalize 的关系定义为
models.UserEvent.hasOne(models.EventFeedback, { foreignKey: 'userEventID' });

我需要 UserEvent 中的所有条目在 EventFeedback 中没有条目的,这是一个排除连接。
this article 窃取图片因为他们有很好的个人图像: left excluding join

他们甚至给出了示例代码!
SELECT <select_list> 
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL

我如何在 Sequelize 中做到这一点?
我是否只需要进行左连接并手动处理它?

最佳答案

您需要急切加载 EventFeedback查询时UserEvent并添加适当的 where条款。您还需要定义 EventFeedback结果中不需要,因此查询将生成 LEFT JOIN相反 INNER JOIN

UserEvent.all({
include: [
model: EventFeedback,
required: false, // do not generate INNER JOIN
attributes: [] // do not return any columns of the EventFeedback table
],
where: sequelize.where(
sequelize.col('EventFeedback.userEventID'),
'IS',
null
)
}).then(userEvents => {
// user events...
});

在上面的代码中 sequelize是 Sequelize 的一个实例,其中定义了模型。您也可以引用 sequelize.where() 的文档和 sequelize.col() 方法。

关于sequelize.js - 左排除加入 Sequelize ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43122077/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com