MySQL按两个子句排序(降序和升序)
我有这张桌子: 创建表productsname文本,数量int; 在产品中插入值A、10; 在产品中插入值B,0; 在产品中插入值C,15; 在产品中插入值D,0; 在产品中插入值E、17; 我想按产品名称订购,但在底部保留数量为0的产品,如下所示:MySQL按两个子句排序(降序和升序),mysql,sql,sql-order-by,Mysql,Sql,Sql Order By,我有这张桌子: 创建表productsname文本,数量int; 在产品中插入值A、10; 在产品中插入值B,0; 在产品中插入值C,15; 在产品中插入值D,0; 在产品中插入值E、17; 我想按产品名称订购,但在底部保留数量为0的产品,如下所示: name quantity A 10 C 15 E 17 B 0 D 0 SELECT * FROM ( select name, quantity from products W
name quantity
A 10
C 15
E 17
B 0
D 0
SELECT * FROM (
select name, quantity from products WHERE quantity>0 order by name) t1
UNION
select name, quantity from products t2 WHERE quantity<=0;
我试过:
按数量说明从产品订单中选择*名称asc;但是,虽然它正确地将quantity=0保留在底部,但名称顺序是相反的。在这种情况下,ORDER BY是正确的吗
SQL Fiddle:尝试以下操作:
select * from products
order by case when quantity = 0 then "z" else name end asc;
我将使用:
order by (quantity = 0), name
布尔值按先假后真的顺序排列
我想用它来表示,而不是使用特殊的值,例如“z”-如果名称以“z”开头,它甚至不起作用。您可以这样尝试:
name quantity
A 10
C 15
E 17
B 0
D 0
SELECT * FROM (
select name, quantity from products WHERE quantity>0 order by name) t1
UNION
select name, quantity from products t2 WHERE quantity<=0;
. . 如果您希望名称以z开头,例如“zip”,则此操作无效。很好,就像您使用我的句柄证明它的方式:-它将返回什么类型的错误?在作者提供的网站上查看一下,一切正常。在工会之前,你已经收到了订单。在您发送的SQLFIDLE中,没有使用union关键字。