SQL Server (Transact-SQL) ORDER BY 关键字用于按升序或降序对结果表进行排序。默认情况下,ORDER BY 关键字按升序对结果进行排序,但可以使用 ASC 关键字指定。若要按降序对结果进行排序,请使用 DESC 关键字。
语法
在 SQL Server (Transact-SQL) 中使用 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表中按Age(升序)和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;
这将对 Employee City 进行排序,如中定义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 |