节点使用Mysql顺序Sequelize,需要null值为last

时间:2015-08-06 10:33:19

标签: mysql node.js sequelize.js

我正在使用节点模块Sequelize for my service,它有一个mysql后端。我需要检索按升序截止日期排序的记录(存储为unix时间戳的值)。但结束日期可以为null,我需要将结束日期为空的记录作为最后一个。

此查询在mysql中有效: 通过-closing_date DESC选择* from my_table order;

然而,我似乎无法配置Sequelize来做到这一点。

查看Sequelize库,我发现有一个ORDER BY closing_date支持ASC NULLS LAST。但据我所知,mysql不支持这种语法。只有mssql。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

在mysql中,执行上述查询的另一种方法是这样的:

SELECT * FROM my_table ORDER BY ISNULL(closing_date), closing_date ASC

这可以用这样的续集来完成:

records.findAll({
    order: [
        sequelize.fn('isnull', sequelize.col('closing_date')),
        ['closing_date', 'ASC']
    ]
}

答案 1 :(得分:0)

您是否尝试过“订单”功能。既然你正在使用nodejs模块,你可以尝试这样的事情:

records.findAll({
  order: [
    sequelize.fn('max', sequelize.col('date')),
  ]
})