来自 Ruby/Rails 背景,我习惯了这种类型的语法:
Model.all.order('col1 + col2 + col3')
因此,假设 col1、col2 和 col3 是整数,例如,它将根据这 3 列的总和对结果进行排序。
是否有类似的方法使用 sequelize 进行排序?
最佳答案
使用最新的 master(不确定更改是否已推送到 npm),您可以执行以下操作:
Model.findAll({ order: [[{ raw: 'col1 + col2 + col3 DESC' }]]});
导致
ORDER BY col1 + col2 + col3 DESC
或者你可以这样做:
Model.findAll({ order: [[sequelize.fn('SUM', sequelize.col('col1'), sequelize.col('col2'), sequelize.col('col3')), 'DESC']]});
导致
ORDER BY SUM(`col1`, `col2`, `col3`) DESC
我会推荐第二个版本,它将正确转义列名。有关详细信息,请参阅 http://sequelizejs.com/documentation#models-finders-limit---offset---order---group
关于javascript - Node sequelize 按多列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19461500/