Mysql-按两列排序,但有一个条件

时间:2019-06-03 11:49:22

标签: mysql

我的数据库查询有问题。我使用opencart 3.0.2.0,并在model / catalog / product.php中输入了以下代码:

ORDER BY p.date_added DESC, p.quantity DESC

我想给我看类别的产品,按日期添加的DESC(最新的)排序,但数量=> 1。但是在最后一页上,我也想看到数量为0的产品。

例如,我在一个类别中有200个产品,每页24个。只有20个产品缺货(数量= 0),我想在最后一页看到那些没有库存的产品。另外,我想通过p.date_added来全部订购。

使用此代码(ORDER BY p.date_added DESC, p.quantity DESC),我看到的就像(ORDER BY p.date_added DESC)。 “ p.quantity DESC”无效。

希望你能理解我。谢谢!

2 个答案:

答案 0 :(得分:1)

使用条件排序:

ORDER BY case 
  when p.quantity > 0 then p.date_added
  else null
end DESC, 
p.quantity DESC

答案 1 :(得分:0)

您可以先通过p.quantity <= 0订购。在MySQL中,非布尔上下文中的布尔表达式的计算结果为0(代表false)或1(代表true)。当然0早于1。

ORDER BY p.quantity <= 0,
         p.date_added DESC
相关问题