5

如何对查询结果进行排序_zhang_shiwei的技术博客_51CTO博客

 1 year ago
source link: https://blog.51cto.com/u_15641375/5810913
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

1. 单列排序

我们先来看下不排序的结果:

SELECT prod_name FROM products;

运行结果如下:

如何对查询结果进行排序_多列

接下来我们对 prod_name 列进行排序。排序使用 ORDER BY 关键字,后面跟着要排序的列。例如:

SELECT prod_name FROM products ORDER BY prod_name;

运行结果如下:

如何对查询结果进行排序_多列_02

可以看到结果按照升序进行了排序。

当我们不明确指定排序的顺序时,MySQL 默认按照升序排序。效果和我们明确指定升序是一样的,如果要明确指定按照升序排序,我们只要在需要排序的字段后面指定 ASC。例如:

SELECT prod_name FROM products ORDER BY prod_name ASC;

运行结果如下:

如何对查询结果进行排序_多列_03

可以看到结果和不明确指定排序顺序是一样的。

和升序相对应的,我们可以进行降序排序。语法和升序一样,只不过 ASC 改成 DESC。例如:

SELECT prod_name FROM products ORDER BY prod_name DESC;

运行结果如下:

如何对查询结果进行排序_c关键字_04

我们可以看到,结果是降序排序的。

2. 多列排序

除了可以对单列进行排序,我们还可以对多列进行排序,例如:

SELECT prod_price, prod_name FROM products ORDER BY prod_price, prod_name;

运行结果如下:

如何对查询结果进行排序_多列_05

像单列排序一样,我们同样可以明确指定排序顺序,例如:

SELECT prod_price, prod_name FROM products ORDER BY prod_price DESC, prod_name;

运行结果如下:

如何对查询结果进行排序_c关键字_06

我们可以看到,结果按照 prod_price 进行了降序排序,但是当 prod_price 相等时,prod_name 还是按照升序进行排序,这说明 DESC 关键字只对位于其前面的列名起作用,

如果想在多个列上进行降序排序,必须对每一列指定DESC关键字。例如:

SELECT prod_price, prod_name FROM products ORDER BY prod_price DESC, prod_name DESC;

运行结果如下:

如何对查询结果进行排序_多列_07

我们可以看到,当 prod_price 相等时,prod_name 同样按照降序进行了排序。

刚才讲的排序,ORDER BY 后面跟的列都是我们要查询的列,实际上,用非查询的列排序数据也是可以的。例如:

SELECT prod_name FROM products ORDER BY prod_price;

运行结果如下:

如何对查询结果进行排序_升序_08

ORDER BY 后面除了跟列名之外,我们还可以使用查询列的相对位置。

SELECT prod_id, prod_price, prod_name FROM products ORDER BY 2, 3;

运行结果如下:

如何对查询结果进行排序_多列_09

这种排序方式的优点是:不用重复输入列名。缺点是:1.有可能用错误的列进行排序,特别是在检索列改变后,忘记对order by子句做相应的改动。2.如果要进行排序的列不在检索的列中,就不能使用相对位置。

下列哪一个关键字的作用是排序?

A. ORDER BY

B. ASC

C. DESC

D. SELECT

下列哪一个关键字的作用是降序排序?

A. ORDER BY

B. ASC

C. DESC

D. SELECT


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK