SQL ORDER 结果 BY 多个子句

SQL ORDER results BY multiple clauses

大家好,我在 prestashop 工作,有一个从不同表中提取数据的长查询,将它们连接在一起,并像这样开始:

SELECT p.*, product_shop.*, 
       stock.out_of_stock, 
       IFNULL(stock.quantity, 0) as quantity, 
       product_attribute_shop.minimal_quantity AS
      ... etc etc

最后按名称排序(用于分页)

      ORDER BY pl.`name` asc
      LIMIT 0,9

我想添加数量条款,但如果我

    ORDER BY quantity desc, pl.`name` asc
    LIMIT 0,9

结果现在先按数量再按名称排序。 我想要实现的是也通过 'quantity' 来订购它。但是我需要的只是把数量为0的产品放在最后。

我更好地解释了自己:

我想查看所有按名称订购的产品,但数量为 0 的产品,我最后需要它们(当然也按名称订购)。 假设我有 14 种产品:

我需要以一种方式订购,如果我

LIMIT 0,9 Result is: A,C,D,E,F,H,J,L,M

LIMIT 0,14 Result is: A,C,D,E,F,H,J,L,M,N,B,G,I,K

谢谢

您只想按布尔值排序——无论值是否为零。在 MySQL 中,您可以使用布尔表达式,“1”表示真,“0”表示假:

ORDER BY (quantity = 0),  -- put 0 last
         pl.`name` asc