ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
语法
SELECT column_name,column_name
FROM table_name
ORDER BY column_name ASC|DESC,column_name ASC|DESC;
示例
Table(表):Movies
Id | Title | Director | Year | Length_minutes |
---|---|---|---|---|
1 | Toy Story | John Lasseter | 1995 | 81 |
2 | A Bug’s Life | John Lasseter | 1998 | 95 |
3 | Monsters, Inc. | Pete Docter | 2001 | 92 |
4 | Finding Nemo | Finding Nemo | 2003 | 107 |
5 | The Incredibles | Brad Bird | 2004 | 116 |
6 | Cars | John Lasseter | 2006 | 117 |
7 | Cars 2 | John Lasseter | 2011 | 120 |
一、按单个列的值排序
【例1】从 “Movies” 表中按电影名字母序升序排列,列出前3部电影
SELECT * FROM Movies
ORDER BY Title ASC LIMIT 3;
查询结果如下:
Id | Title | Director | Year | Length_minutes |
---|---|---|---|---|
1 | A Bug’s Life | John Lasseter | 1998 | 95 |
2 | Cars | John Lasseter | 2006 | 117 |
3 | Cars 2 | John Lasseter | 2011 | 120 |
【例2】从 “Movies” 表中按电影名字母序升序排列,列出上一题之后的2部电影
SELECT * FROM Movies
ORDER BY Title ASC LIMIT 2 OFFSET 3;
查询结果如下:
Id | Title | Director | Year | Length_minutes |
---|---|---|---|---|
1 | Finding Nemo | Finding Nemo | 2003 | 107 |
2 | Monsters, Inc. | Pete Docter | 2001 | 92 |
LIMIT 和 OFFSET 子句通常和ORDER BY 语句一起使用,当我们对整个结果集排序之后,我们可以 LIMIT来指定只返回多少行结果 ,用 OFFSET来指定从哪一行开始返回。你可以想象一下从一条长绳子剪下一小段的过程,我们通过 OFFSET 指定从哪里开始剪,用 LIMIT 指定剪下多少长度。
二、按多个列的值排序
【例3】从 “Movies” 表中按导演名字母升序,如果导演名相同按年份降序,取前4部电影
SELECT * FROM Movies
ORDER BY Director ASC,Year DESC LIMIT 4;
查询结果如下:
Id | Title | Director | Year | Length_minutes |
---|---|---|---|---|
1 | The Incredibles | Brad Bird | 2004 | 116 |
2 | Finding Nemo | Finding Nemo | 2003 | 107 |
3 | Toy Story | John Lasseter | 1995 | 81 |
4 | A Bug’s Life | John Lasseter | 1998 | 95 |
影响:数据会先按照第一个字段排序(Director),如果第一个字段的值相同,再按照第二个字段(Year)排序!