SQL ORDER结果由多个子句组成

问题描述 投票:0回答:1

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

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

最后以BY的顺序排序,假设名称和限制(用于分页)

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

我想添加一个数量子句,但是如果我

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

现在先按数量然后按名称对结果进行排序。我试图实现的目标是也通过“数量”来命令它。但是我需要的只是将数量为0的产品放在最后。

我会更好地解释自己:

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

  • 产品A:752
  • 产品B:0
  • 产品C:1000
  • 产品D:584
  • 产品E:333
  • 产品F:264
  • 产品G:0
  • 产品H:6
  • 产品I:0产品J:994
  • 产品K:0
  • 产品L:2
  • 产品M:4500
  • 产品N:7

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

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

谢谢

php mysql sql sql-order-by prestashop
1个回答
0
投票
一个简单的解决方案是更改列的名称:

SELECT . . . COALESCE(stock.quantity, 0) as stock_quantity . . . ORDER BY stock_quantity desc, pl.`name` asc

© www.soinside.com 2019 - 2024. All rights reserved.