我在我的项目中使用sequalize ORM来处理SQL查询。但是我已经使用了简单的查询,现在我想将这个复杂的SQL原始查询转换为sequalize ORM。
SELECT
u.uid
FROM
users u
WHERE
u.uid NOT IN(
SELECT
DISTINCT
CASE
WHEN uid = 3 THEN
blocked_uid
WHEN uid <> 3 THEN
uid
END AS 'uid'
FROM
user_block
WHERE
`status` = 'ACTIVE'
AND(
(uid IN(4, 5) AND blocked_uid = 3)
OR(uid = 3 AND blocked_uid IN(4, 5))
)
)
AND u.uid IN(4, 5)
最佳答案
您可以使用查询函数并绑定(bind)参数或使用 WHERE/IN 子句中的值的替换,如文档 http://docs.sequelizejs.com/en/latest/docs/raw-queries/#replacements 所示。 。
例如:
sequelize.query('SELECT * FROM projects WHERE status = ?',
{ replacements: ['active'], type: sequelize.QueryTypes.SELECT
}).then(function(projects) {
console.log(projects)
})
关于mysql - 使用子查询和 case When 语句对查询进行序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34628926/