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 种产品:
- 产品A:752
- 产品 B:0
- 产品 C:1000
- 产品 D:584
- 产品E:333
- 产品 F:264
- 产品 G:0
- 产品高:6
- 产品一:0
商品 J: 994
- 产品 K: 0
- 产品大号:2
- 产品中号: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
谢谢
您只想按布尔值排序——无论值是否为零。在 MySQL 中,您可以使用布尔表达式,“1”表示真,“0”表示假:
ORDER BY (quantity = 0), -- put 0 last
pl.`name` asc
大家好,我在 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 种产品:
- 产品A:752
- 产品 B:0
- 产品 C:1000
- 产品 D:584
- 产品E:333
- 产品 F:264
- 产品 G:0
- 产品高:6
- 产品一:0 商品 J: 994
- 产品 K: 0
- 产品大号:2
- 产品中号: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
谢谢
您只想按布尔值排序——无论值是否为零。在 MySQL 中,您可以使用布尔表达式,“1”表示真,“0”表示假:
ORDER BY (quantity = 0), -- put 0 last
pl.`name` asc