如何在sequelize中选择案例查询?

Posted

技术标签:

【中文标题】如何在sequelize中选择案例查询?【英文标题】:How to select case query in sequelize? 【发布时间】:2017-03-20 15:14:42 【问题描述】:

我有一个 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);

谁能帮帮我?谢谢。

【问题讨论】:

【参考方案1】:

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

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/#attributes

【讨论】:

以上是关于如何在sequelize中选择案例查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何将查询逻辑添加到基于 graphql-sequelize 的设置?

使用把手显示来自 sequelize 查询的值

了解 Sequelize 中的关联

kenx JS 和 Sequelize 有啥区别?

如何在使用 Sequelize 更改列或添加新列时更新迁移文件

在 Sequelize 中创建对象字段