- ORDER BY 语句用于根据指定的列对结果集进行排序。
- ORDER BY 语句默认按照升序(ASC)对记录进行排序。如果您希望按照降序对记录进行排序,可以使用 DESC 关键字
语法
SELECT select_expr [, select_expr] ...
FROM table_references [PARTITION partition_list]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
[HAVING where_condition]
ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP];
参数 |
说明 |
||||||||||||
select_expr |
包含选择列表,该列表指示要检索的列。指定列或表达式,或者可以使用 * 必须至少有一个select_expr |
||||||||||||
[FROM table_references [PARTITION partition_name,[partition_name] … ] ] |
指定语句作用到的数据表名
|
||||||||||||
[WHERE where_condition] |
WHERE子句(如果给定)指示行必须满足的条件才能被选择。 如果没有WHERE子句,语句将选择所有行
|
||||||||||||
[GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] |
使用GROUPBY时对任意列进行排序,可以使用列名、列别名或列位置在ORDER BY和GROUP BY子句中引用为输出选择的列。列位置为整数,以1开头:
|
||||||||||||
[HAVING where_condition] |
HAVING子句与WHERE子句一样,指定选择条件。WHERE子句指定选择列表中列的条件,但不能引用聚合函数。
HAVING子句指定组的条件,通常由GROUP by子句构成。查询结果仅包括满足HAVING条件的组。(如果不存在GROUP BY,则所有行隐式地形成一个聚合组。)
注 HAVING子句必须位于任何GROUP BY子句之后和任何ORDER BY子句之前 如果HAVING子句引用的列不明确,则会出现警告 |
||||||||||||
ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP] |
ORDER BY子句用于根据查询结果排序,默认为升序
|
示例
mysql> SELECT name,age
-> FROM tb_student
-> GROUP BY score
运行结果如下:
+----------+--------+
| name | score |
+----------+--------+
| John | 22 |
| Jim | 23 |
| Thomas | 25 |
| Henry | 27 |
+----------+--------+
4 rows in set (0.00 sec)
示例
mysql> SELECT name,age
-> FROM tb_student
-> WHERE age > 23
-> GROUP BY score
运行结果如下:
+----------+--------+
| name | score |
+----------+--------+
| Thomas | 25 |
| Henry | 27 |
+----------+--------+
2 rows in set (0.00 sec)
注
ORDER BY的原则,写在最前面的字段,他的优先级最高,也就是写法中第一个的字段名1的优先级最高,优先执行他的内容