使用 NOT IN 子句和嵌套 SELECT 对查询进行 Sequelize
Sequelize query with NOT IN clause and nested SELECT
我有一个 SQL 查询,我想使用 sequelize 查询语法来表达它。
数据库方案
- 用户:(id,用户名,...)
- 群组:(id,名称,...)
- User_Groups: (id, #groupId, #userId)
查询描述
检索尚未属于特定组的所有用户。
原始 SQL 查询(工作)
SELECT User.id, User.email FROM Users as User
WHERE User.id NOT IN (
SELECT User_Group.userId FROM User_Groups as User_Group
WHERE User_Group.groupId = ${groupId}
)
我被屏蔽的地方
我尝试使用 sequelize include
语句模拟连接,但我的大脑无法转换嵌套的 SELECT 查询以及 NOT IN
运算符...
It's not possible to represent sub-queries 除了在 where
子句中使用 Sequelize.literal 之外:
const users = await database.User.findAll({
where: Sequelize.where(Sequelize.literal(`(User.id NOT IN (
SELECT User_Group.userId FROM User_Groups as User_Group
WHERE User_Group.groupId = '${groupId}'
))`)
}
或者您可以将 Op.notIn 与 Sequelize.literal
混淆
我有一个 SQL 查询,我想使用 sequelize 查询语法来表达它。
数据库方案
- 用户:(id,用户名,...)
- 群组:(id,名称,...)
- User_Groups: (id, #groupId, #userId)
查询描述
检索尚未属于特定组的所有用户。
原始 SQL 查询(工作)
SELECT User.id, User.email FROM Users as User
WHERE User.id NOT IN (
SELECT User_Group.userId FROM User_Groups as User_Group
WHERE User_Group.groupId = ${groupId}
)
我被屏蔽的地方
我尝试使用 sequelize include
语句模拟连接,但我的大脑无法转换嵌套的 SELECT 查询以及 NOT IN
运算符...
It's not possible to represent sub-queries 除了在 where
子句中使用 Sequelize.literal 之外:
const users = await database.User.findAll({
where: Sequelize.where(Sequelize.literal(`(User.id NOT IN (
SELECT User_Group.userId FROM User_Groups as User_Group
WHERE User_Group.groupId = '${groupId}'
))`)
}
或者您可以将 Op.notIn 与 Sequelize.literal
混淆