我正在使用节点模块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。
非常感谢任何帮助。
答案 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')),
]
})