mysql - 使用子查询和 case When 语句对查询进行序列化

标签 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)

最佳答案

您可以使用查询函数并绑定(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/

相关文章:

mysql 工作台将 nvarchar 列转换为 varchar?

php - 在多个数组中循环多个 SQL 查询

sql - 我如何找到每年的前 N ​​名击球手?

javascript - 解压文件 node.js 时出现意外的文件结束错误

javascript - 在node.js中使用for循环?

node.js - 无法下载附加到项目的 Podio 文件

foreach循环中mysql语法错误

php - 使用 REST 直接通过 id 来识别 mysql 条目是个好主意吗?

mysql - 在不同的表上运行相同的 SQL 脚本

mysql - 最新 - 邮政编码数据库?