我很困惑如何处理嵌套 WHERE
正在使用 Sequelize。该文档实际上没有这方面的示例。我有一个如下所示的查询:
SELECT * FROM Users WHERE likes <= $likeVariable AND ( likes < $likeVariable OR id < $idVariable ) ORDER BY likes DESC, id DESC
我需要此查询来对非唯一属性进行基于游标的分页 likes
,这就是为什么我需要 id
建议特性 here
如何将其转换为我的 Sequelize 查询?
var users = await Users.findAndCountAll({
where: ????, <- How do I do the WHERE clause?
order: [['likes', 'DESC'], ['id', 'DESC']]
});
最佳答案
我相信我已经弄清楚了,心理障碍是发现 [Op.or]
不必在属性中使用:
where: {
likes: {
[Op.lte]: $likeVariable
},
[Op.or]: [
{
likes: {
[Op.lt]: $likeVariable
}
},
{
id: {
[Op.lt]: $idVariable
}
}
]
}
结果,我的终端打印出 Sequelize 生成的以下 SQL 查询:
SELECT * FROM `Users` AS `User`
WHERE (`User`.`likes` < 6 OR `User`.`id` < 85)
AND `User`.`likes` <= 6
ORDER BY `User`.`hypes` DESC, `User`.`id` DESC;
感谢 Jiml 让我走上正轨!
关于javascript - 如何处理 Sequelize 嵌套/复合查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58244841/