SQLite ORDER BY 关键字用于按升序或降序对结果表进行排序。默认情况下,ORDER BY 关键字按升序对结果进行排序,但可以使用 ASC 关键字指定。要按降序对结果进行排序,请使用 DESC 关键字。

语法

在 SQLite 中使用 ORDER BY 关键字的语法如下:

SELECT column1, column2, column3, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC; 

示例:

考虑一个名为 Employee 的数据库表,其中包含以下记录:

EmpIDNameCityAgeSalary
1JohnLondon253000
2MarryNew York242750
3JoParis272800
4KimAmsterdam303100
5RameshNew Delhi283000
6HuangBeijing282800

要获取按年龄(升序)排序的Employee表,查询为:

SELECT * FROM Employee
ORDER BY Age ASC; 

这将产生如下所示的结果:

IDNameCityAgeSalary
2MarryNew York242750
1JohnLondon253000
3JoParis272800
5RameshNew Delhi283000
6HuangBeijing282800
4KimAmsterdam303100

要获取 Employee 表中按年龄(升序)和 EmpID(降序)排序的所有字段,查询将为:

SELECT * FROM Employee
ORDER BY Age ASC, EmpID DESC; 

以下代码的结果将是:

IDNameCityAgeSalary
2MarryNew York242750
1JohnLondon253000
3JoParis272800
6HuangBeijing282800
5RameshNew Delhi283000
4KimAmsterdam303100

将 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 语句中定义的方式对 Employee City 进行排序,并产生以下结果:

IDNameCityAgeSalary
2MarryNew York242750
1JohnLondon253000
4KimAmsterdam303100
3JoParis272800
5RameshNew Delhi283000
6HuangBeijing282800