首页 > 解决方案 > MySQL ORDER BY 两个子句(降序和升序)

问题描述

我有这张桌子:

create table products(name text, quantity int);
insert into products values ("A", 10);
insert into products values ("B", 0);
insert into products values ("C", 15);
insert into products values ("D", 0);
insert into products values ("E", 17);

我想按产品名称订购,但将产品quantity = 0放在底部,如下所示:

name    quantity
A       10
C       15
E       17
B       0
D       0

我试过了: select * from products order by quantity desc, name asc;但它虽然正确地保持quantity = 0在底部,但名称顺序却相反。ORDER BY在这种情况下使用正确的东西吗?

SQL 小提琴:http ://sqlfiddle.com/#!9/6985a4/1/0

标签: mysqlsqlsql-order-by

解决方案


试试这个:

select * from products 
order by case when quantity = 0 then "z" else name end asc;

推荐阅读