【发布时间】:2020-06-02 21:42:07
【问题描述】:
我有一个模型,其中包含 price_from、price_to 和 created_at 等字段。
现在我像这样查询它:
Model.findAll({ order: [['created_at', 'DESC']] });
我想添加另一个订单查询,所以最后会返回不包含price_from 和price_to 的记录,但不会按这些价格排序。
有没有办法在Sequelize中实现?
【问题讨论】:
我有一个模型,其中包含 price_from、price_to 和 created_at 等字段。
现在我像这样查询它:
Model.findAll({ order: [['created_at', 'DESC']] });
我想添加另一个订单查询,所以最后会返回不包含price_from 和price_to 的记录,但不会按这些价格排序。
有没有办法在Sequelize中实现?
【问题讨论】:
您可以使用sequelize.literal 执行 CASE WHEN 语句,如下所示:
Model.findAll({ order: [
['created_at', 'DESC'],
[sequelize.literal('CASE WHEN price_from IS NULL AND price_to IS NULL THEN 1 ELSE 0 END'), 'DESC']
] });
可能您的字段为 0 或为空,因此您可以调整 CASE 比较。
【讨论】: