Orm 使用NOT IN子句和嵌套SELECT对查询进行续集
我有一个SQL查询,我想用sequelize查询语法来表示 DB方案Orm 使用NOT IN子句和嵌套SELECT对查询进行续集,orm,sequelize.js,Orm,Sequelize.js,我有一个SQL查询,我想用sequelize查询语法来表示 DB方案 用户:(id,用户名,…) 组:(id,名称,…) 用户组:(id,#组id,#用户id) 查询描述 检索尚未属于特定组的所有用户 原始SQL查询(工作) 我被阻止的地方 我试图使用sequelizeinclude语句模拟连接,但我的大脑无法转换嵌套的SELECT查询以及NOT IN操作符…而不是在where子句中使用sequelize.literal,如下所示: const users = await database.
- 用户:(id,用户名,…)
- 组:(id,名称,…)
- 用户组:(id,#组id,#用户id)
include
语句模拟连接,但我的大脑无法转换嵌套的SELECT查询以及NOT IN
操作符…而不是在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混合使用,非常感谢您指出
Sequelize.literal
选项。它为我指明了正确的方向,最后指出了sequelize中子查询的局限性。。。
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}'
))`)
}