SQLite - ORDER BY 子句
SQLite - 使用 ORDER BY 对查询结果排序
Section titled “SQLite - 使用 ORDER BY 对查询结果排序”ORDER BY 子句用于 SELECT 语句中,根据一个或多个列的值对结果集进行排序。您可以按升序或降序对数据进行排序。
SELECT column_listFROM table_name[WHERE condition]ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...;- ASC:按升序(从小到大)对结果进行排序。如果未指定顺序,这是默认行为。
- DESC:按降序(从大到小)对结果进行排序。
让我们按 SALARY 降序对 COMPANY 表进行排序,以首先查看薪水最高的员工。
SELECT NAME, SALARY FROM COMPANY ORDER BY SALARY DESC;这将产生以下结果:
NAME SALARY---------- ----------David 85000.0Mark 65000.0Kim 45000.0Paul 20000.0Teddy 20000.0Allen 15000.0James 10000.0您可以按多个列进行排序。结果集首先按第一列排序,然后,对于第一列中具有相同值的任何行,它们会按第二列排序,依此类推。让我们按 AGE(升序)排序,然后对于相同年龄的员工按 NAME(字母顺序)排序。
SELECT NAME, AGE FROM COMPANY ORDER BY AGE ASC, NAME ASC;注意 Mark 和 Allen(都 25 岁)现在是如何按姓名字母顺序排序的。
NAME AGE---------- ----------Kim 22Teddy 23James 24Allen 25Mark 25David 27Paul 32处理 NULL 值
Section titled “处理 NULL 值”默认情况下,NULL 值被认为小于任何其他值。这意味着它们在 ASC 排序中显示在最前面,在 DESC 排序中显示在最后面。您可以使用 NULLS FIRST 或 NULLS LAST 覆盖此行为。
假设我们的 SALARY 列可能包含 NULL 值。若要首先列出已知薪水的员工(降序),然后是未知薪水的员工,您可以使用:
-- 假设某些员工的 SALARY 为 NULLSELECT NAME, SALARY FROM COMPANY ORDER BY SALARY DESC NULLS LAST;按表达式排序
Section titled “按表达式排序”您不仅限于按列排序。您还可以按表达式的结果进行排序。例如,让我们找出薪资年龄比最高的员工。
SELECT NAME, SALARY, AGE, (SALARY / AGE) AS RATIOFROM COMPANYORDER BY RATIO DESC;这个强大的功能允许直接在您的 SQL 查询中实现复杂的排序逻辑。