使用 NOT IN 子句和嵌套 SELECT 对查询进行 Sequelize

Sequelize query with NOT IN clause and nested SELECT

我有一个 SQL 查询,我想使用 sequelize 查询语法来表达它。

数据库方案

查询描述

检索尚未属于特定组的所有用户。

原始 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.notInSequelize.literal

混淆