如何将含多字段相加排序逻辑的MySQL语句转换为Sequelize查询
你可以使用 Sequelize 提供的 literal 方法拼接原生字段运算逻辑来实现,写法如下:
假设你已经完成 RewardEntries 模型的定义,直接调用 findAll 方法即可:
const rewardList = await RewardEntries.findAll({ order: [ [Sequelize.literal('`RewardEntries`.`happinessPoint` + `RewardEntries`.`moneyPoint` + `RewardEntries`.`healthyPoint`'), 'DESC'] ] })
如果当前查询没有关联其他表,不会出现字段名冲突的话,可以简化 literal 里的写法,省略表名:
order: [ [Sequelize.literal('`happinessPoint` + `moneyPoint` + `healthyPoint`'), 'DESC'] ]
literal 方法会将传入的内容直接作为原生SQL片段处理,不会做额外转义,最终执行的SQL和你提供的原生语句完全一致。
内容的提问来源于stack exchange,提问作者poppy
相关产品推荐
相关产品推荐

