使用子查询和case Then语句进行Sequalize查询

时间:2016-01-06 08:50:38

标签: mysql sql node.js orm sequelize.js

我正在使用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)

1 个答案:

答案 0 :(得分:0)

根据文档http://docs.sequelizejs.com/en/latest/docs/raw-queries/#replacements,您可以使用查询函数并绑定参数或对WHERE / IN子句中的值使用替换。

例如:

sequelize.query('SELECT * FROM projects WHERE status = ?',
{ replacements: ['active'], type: sequelize.QueryTypes.SELECT 
}).then(function(projects) {
  console.log(projects)
})