如何在 Sequelize 中使用“不同”?

Posted

技术标签:

【中文标题】如何在 Sequelize 中使用“不同”?【英文标题】:How to use 'distinct' in Sequelize? 【发布时间】:2021-09-05 04:58:27 【问题描述】:

我尝试在 Sequelize 中调用以下 SQL 函数。

SELECT messID
FROM users
WHERE userID in userIds
GROUP BY messID
having count(distinct userID) = userIds.length

userIds 是一个 id 数组。到目前为止,我目前有以下内容,但我在最后一行遇到了问题。

Users.findNewID = async function (userIds) 
  const newID = await Users.findOne(
    where: 
      [Op.contains]: userIds
    ,
    group: messID,
  );

  return newID;
;

但我不确定如何在 having 行上使用 distinct。

【问题讨论】:

【参考方案1】:

Sequelize 不是关于复杂的聚合查询,它主要是关于使用映射到表的模型(这就是它被称为 ORM 的原因)。

只需使用带有如下参数的普通 SQL 查询:

const newIDResult = await sequelize.query(`
SELECT messID
FROM users
WHERE userID in $userIds
GROUP BY messID
having count(distinct userID) = $userIdsLength
`, 
  type: QueryTypes.SELECT,
  bind: 
            userIds,
            userIdsLength: userIds.length
        
 );

【讨论】:

以上是关于如何在 Sequelize 中使用“不同”?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 sequelize 获得行的不同值?

用户如何使用 sequelize postgres nodejs 互相喜欢和不同?

在 Sequelize 中定义模型的不同方法

如何使用 sequelize 从 graphql 中的映射表中访问数据

如何在 Sequelize 查询中加入另一个表

如何在 Sequelize 中使用 Postgres 的 BIGSERIAL?