MySQL ORDER BY(排序) 语句
MySQL ORDER BY(排序) 语句可以按照一个或多个列的值进行升序(ASC)或降序(DESC)排序
使用 ORDER BY 子句从数据表中读取数据,语法如下:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
参数说明:
column1
,column2
, ... 是你要选择的列的名称,如果使用*
表示选择所有列table_name
是你要从中查询数据的表的名称ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...
是用于指定排序顺序的子句。ASC
表示升序(默认),DESC
表示降序
更多说明:
- 你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果
- 你可以设定多个字段来排序
- 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列
- 你可以添加 WHERE...LIKE 子句来设置条件
以下示例在之前创建的RoboMaster数据库下进行操作
当前数据库数据
mysql> SELECT * FROM Username;
+------+------------+-----------+
| id | Username | Password |
+------+------------+-----------+
| 1 | steins_xin | 123456 |
| 2 | xin | 123456789 |
+------+------------+-----------+
2 rows in set (0.01 sec)
示例:
- 单列排序:
升序 ASC 排序
SELECT * FROM username ORDER BY id ASC;
结果:
mysql> SELECT * FROM username ORDER BY id ASC;
+------+------------+-----------+
| id | Username | Password |
+------+------------+-----------+
| 1 | steins_xin | 123456 |
| 2 | xin | 123456789 |
+------+------------+-----------+
2 rows in set (0.00 sec)
- 多列排序:
SELECT * FROM username
ORDER BY id ASC, username ASC;
以上 SQL 语句将并 ID 升序 ASC 排序,然后在相同ID中根据 username 降序 ASC 排序。
结果:
mysql> SELECT * FROM username
-> ORDER BY id ASC, username ASC;
+------+--------------+-----------+
| id | Username | Password |
+------+--------------+-----------+
| 1 | aasteins_xin | 123456 |
| 1 | steins_xin | 123456 |
| 2 | xin | 123456789 |
+------+--------------+-----------+
3 rows in set (0.00 sec)
- 使用数字表示列的位置:
SELECT id, username, Password
FROM username
ORDER BY 1 DESC, 2 ASC;
以上 SQL 语句将按第一列(id)降序 DESC 排序,然后按第二列(username)升序 ASC 排序。
结果:
mysql> SELECT id, username, Password
-> FROM username
-> ORDER BY 1 DESC, 2 ASC;
+------+--------------+-----------+
| id | username | Password |
+------+--------------+-----------+
| 2 | xin | 123456789 |
| 1 | aasteins_xin | 123456 |
| 1 | steins_xin | 123456 |
+------+--------------+-----------+
3 rows in set (0.00 sec)