MySQL ORDER BY关键字用于对结果表进行升序或降序排序。默认情况下,ORDER BY 关键字按升序对结果进行排序,但可以使用 ASC 关键字指定。要对结果进行降序排序,需要使用 DESC 关键字。
语法
MySQL 中使用 ORDER BY 关键字的语法如下:
SELECT column1, column2, column3, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
示例:
考虑一个名为 Employee 的数据库表,其中包含以下记录:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
要获取按年龄(升序)排序的Employee表,查询为:
SELECT * FROM Employee
ORDER BY Age ASC;
这将产生如下所示的结果:
ID | Name | City | Age | Salary |
---|---|---|---|---|
2 | Marry | New York | 24 | 2750 |
1 | John | London | 25 | 3000 |
3 | Jo | Paris | 27 | 2800 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
要获取Employee表中按年龄(升序)和EmpID(降序)排序的所有字段,查询将是:
SELECT * FROM Employee
ORDER BY Age ASC, EmpID DESC;
以下代码的结果将是:
ID | Name | City | Age | Salary |
---|---|---|---|---|
2 | Marry | New York | 24 | 2750 |
1 | John | London | 25 | 3000 |
3 | Jo | Paris | 27 | 2800 |
6 | Huang | Beijing | 28 | 2800 |
5 | Ramesh | New Delhi | 28 | 3000 |
4 | Kim | Amsterdam | 30 | 3100 |
将 ORDER BY 与 CASE 语句结合使用
获取具有自己首选顺序的行,CASE 语句可以与 ORDER BY 语句一起使用,如下所示:
要获取Employee按city排序的表(如 CASE 语句中定义),查询为:
SELECT * FROM Employee
ORDER BY (
CASE City
WHEN 'New York' THEN 1
WHEN 'London' THEN 2
WHEN 'Amsterdam' THEN 3
WHEN 'Paris' THEN 4
ELSE 5
END
)ASC, Salary DESC;
这将按 CASE 语句中定义的方式对员工城市进行排序,并生成以下结果结果:
ID | Name | City | Age | Salary |
---|---|---|---|---|
2 | Marry | New York | 24 | 2750 |
1 | John | London | 25 | 3000 |
4 | Kim | Amsterdam | 30 | 3100 |
3 | Jo | Paris | 27 | 2800 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |