如何在序列化中选择案例查询

How to select case query in sequelize?

本文关键字:选择 案例 查询 序列化      更新时间:2023-09-26

有一个sql查询:

SELECT field1, field2,
  CASE
    WHEN field1=1 THEN 'a'
    ELSE 'b'
  END 
  AS field3
FROM test

,我想用sequelizejs实现它,

const params = {
  attributes: //DO SELECT CASE,
};
yield Model.findAll(params);

有人能帮我吗?谢谢你。

对于仍在寻找这个答案的人

Model.findAll({
  attributes: [[models.sequelize.literal('CASE WHEN "field1" = true THEN 55 ELSE 23 END'), 'field3']]
}

Model.findAll({
  attributes: { include: [[models.sequelize.literal('CASE WHEN "field1" = true THEN 55 ELSE 23 END'), 'field3']]}
}

所以在我的例子中,当field1为true时,它将返回55否则23。这将生成一个类似

的查询
SELECT CASE WHEN "field1" THEN 55 ELSE 23 END AS "field3" FROM "models"

有关更多信息,您可以查看文档http://docs.sequelizejs.com/en/latest/docs/querying/属性