如何在Sequelize中对查询结果进行排序?



我试图返回有序表单查询的结果(升序或降序),我知道它是使用顺序完成的:['columnName',排序顺序(ASC/DESC)],我做得很好,当我只对基础排序到单列,但假设我有一个表与这些列:

product_id, price, offer_price, offer, description

,我想按价格或offer_price排序(offer_price列取决于报价列,也就是说,只有当报价列的值为1时,我才对offer_price感兴趣,这表明该产品确实在出售)。

我怎么做才能使结果返回给我,按价格或按price_offer,也就是说,如果产品在销售,我必须考虑订购时的price_offer,如果它不在销售,那么我应该考虑正常价格。

例如:

Product1: product_id = 1, price = 9,000, offer_price = 8,500, offer = 1, description: 'yy'

Product2: product_id = 2, price = 2,000, offer_price = 500, offer = 0, description: 'bbb'

Product3: product_id = 3, price = 1,500, offer_price = 1,000, offer = 1, description: 'ccccc'

查询结果由小到大依次为:product3, product2, product1。由于product3正在销售,并且是所有产品中最低的价格(1,000),因此产品2如下(该产品有price_offer = 500,但不正在销售,因此取正常价格(2,000),最后取product3(8,500))。

我如何使用Sequelize实现这一点?我找不到能帮我整理文档的东西。

你可以这样使用MySQL的IF函数:

order: [sequelize.literal('(IF(offer = 1, offer_price, price))'), sort order (ASC / DESC)]

最新更新