如何解决使用NOT IN子句和嵌套SELECT进行查询排序
我有一个SQL查询,我想使用续集查询语法来表达。
数据库方案
- 用户:( 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}
)
我被阻止的地方
我尝试使用序列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
混合使用版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。