MySQL ORDER BY 两个子句(降序和升序)

标签 mysql sql sql-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 amount desc, name asc; 但是,虽然它正确地将 quantity = 0 保留在底部,但名称顺序却相反。在这种情况下使用 ORDER BY 是否正确?

SQL fiddle :http://sqlfiddle.com/#!9/6985a4/1/0

最佳答案

我会使用:

order by (quantity = 0), name

bool 值的排序顺序为“false”,然后是“true”。

我会使用它来显式地使用它,而不是使用诸如 'z' 之类的特殊值 - 如果您的名称以 'z' 开头,这甚至不起作用.

关于MySQL ORDER BY 两个子句(降序和升序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59359120/

相关文章:

mysql - 基于多个计算值的 MySQL View

mysql - 使用 JOIN 选择在第二个表上有 2 个条件的行

sql - #在SQL中的意义是什么?

mysql - 如何集成 MySQL 子查询

mysql - 将列合并为一列

Linq 按字符串排序不起作用

MySQL 查询 - 每组最近的条目

php - mysqli 更新 - 将一个值复制到另一个抛出错误

sql - 在 H2 SELECT 查询中首先对 NULL 进行排序

php - 在 MYSQL 中连接字符串