SQLite ORDER BY 子句
                           
天天向上
发布: 2025-03-04 08:43:44

原创
732 人浏览过

ORDER BY 子句用于对查询结果进行排序。默认情况下,ORDER BY 会按升序 (ASC) 排列数据,但也可以指定按降序 (DESC) 排列。通过指定一列或多列来排序,ORDER BY 子句帮助你在查询中获取有序的结果集。

基本语法

SELECT column_name(s)
FROM table_name
WHERE condition
ORDER BY column_name [ASC|DESC];
  • column_name(s): 需要查询的列,可以是单列或多列。
  • table_name: 需要查询的表。
  • condition: 可选的查询条件。
  • ORDER BY column_name: 指定排序依据的列名。
  • ASC: 默认的排序方式,按升序排序。
  • DESC: 按降序排序。

1. 按单列排序

ORDER BY 子句最简单的用法是根据单一列进行排序。

示例:

  • salary 列升序排列员工数据:
  SELECT * FROM employees
  ORDER BY salary ASC;
  • 该查询返回按薪资升序排列的员工记录。
  • salary 列降序排列员工数据:
  SELECT * FROM employees
  ORDER BY salary DESC;
  • 该查询返回按薪资降序排列的员工记录。

2. 按多列排序

ORDER BY 也可以根据多个列进行排序。当多列排序时,SQLite 会按顺序应用每一列的排序规则。

示例:

  • 先按 department 列升序,再按 salary 列降序排列员工数据:
  SELECT * FROM employees
  ORDER BY department ASC, salary DESC;
  • 该查询首先按 department 升序排列,然后在同一部门内按 salary 降序排列。

3. 默认排序方式

如果没有明确指定排序顺序,ORDER BY 默认按 升序 (ASC) 排序。

示例:

  • 默认按 name 升序排序:
  SELECT * FROM employees
  ORDER BY name;
  • 该查询按员工名字的升序排列员工记录,默认使用升序。

4. 使用 NULL 值进行排序

SQLite 对 NULL 值的排序行为也需要注意:

  • 升序 排序时,NULL 值排在最前面。
  • 降序 排序时,NULL 值排在最后面。

示例:

  • 查找 email 列中没有值的员工(即 NULL 值),按 name 升序排列:
  SELECT * FROM employees
  WHERE email IS NULL
  ORDER BY name ASC;
  • 该查询返回所有 email 列为 NULL 的员工,并按名字升序排列。
  • salary 列降序排列,NULL 值排在最后:
  SELECT * FROM employees
  ORDER BY salary DESC;
  • 该查询返回员工数据,薪资降序排列,NULL 值排在最后。

5. 使用表达式进行排序

ORDER BY 还可以对表达式进行排序,例如对计算结果、函数结果等进行排序。

示例:

  • 按员工年龄的平方值排序:
  SELECT name, age
  FROM employees
  ORDER BY age * age;
  • 该查询根据员工年龄的平方值排序,年龄较大的员工排在前面。
  • 使用 LENGTH 函数按名字长度排序:
  SELECT name
  FROM employees
  ORDER BY LENGTH(name);
  • 该查询根据名字的长度对员工数据进行排序,名字较短的员工排在前面。

6. 使用 LIMITORDER BY 结合

ORDER BY 可以与 LIMIT 子句结合,返回排序后的前 N 条记录,常用于获取最小或最大值的数据。

示例:

  • 查找薪资最高的 3 个员工:
  SELECT * FROM employees
  ORDER BY salary DESC
  LIMIT 3;
  • 该查询返回薪资最高的 3 个员工记录。
  • 查找薪资最低的 5 个员工:
  SELECT * FROM employees
  ORDER BY salary ASC
  LIMIT 5;
  • 该查询返回薪资最低的 5 个员工记录。

总结

  • ORDER BY 用于对查询结果进行排序。
  • 可以按单列或多列进行排序。
  • 排序默认是 升序 (ASC),可以显式使用 降序 (DESC) 排序。
  • 可以结合 LIMIT 获取排序后的前 N 条记录。
  • NULL 值的排序会根据排序方式的不同有所不同,升序时 NULL 在前,降序时 NULL 在后。
  • ORDER BY 可以与 表达式函数 配合使用,进行复杂的排序。

ORDER BY 是在查询中控制返回数据顺序的重要工具,尤其在需要展示有序数据时非常有用。更多详细内容请关注其他相关文章。

发表回复 0

Your email address will not be published. Required fields are marked *