SQLite Order By

我们已经能够灵活的使用各种条件筛选出我们想要的记录,但是这些记录顺序看起来杂乱无章,没有规律。我们想对记录进行排序,要怎么做呢?

SQLite 的 ORDER BY 子句可以对一个或多个列按升序或降序顺序排列数据

ORDER BY 子句在 SELECT 查询中的位置

SELECT 语句中, ORDER BY 子句放在 LIMIT 子句之前,其它所有的子句之后。

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT

ORDER BY 子句的基本语法

SELECT column-list 
FROM table_name 
[WHERE condition] 
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

ASC 表示升序(有小到达) DESC 表示降序(由大到小)

可以在 ORDER BY 子句中使用多个列,但要确保使用的排序列在列清单中。

范例

假设我们的 company 表有以下记录:

sqlite> SELECT * FROM company;
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

1. 按照 salary 字段升序(有小到大)排序

sqlite> SELECT * FROM company ORDER BY salary ASC;
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
7           James       24          Houston     10000.0
2           Allen       25          Texas       15000.0
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
6           Kim         22          South-Hall  45000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

2. 按照 salary 和 name 升序排序

如果有多个字段参与排序,SQLite 从左往右一个一个排序,如果第一个字段相同,则按照第二个字段排序,以此类推

因此,按照 salary 和 name 升序排序,就是先按照 salary 升序排序,salary 相同的再按照 name 排序。

id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
7           James       24          Houston     10000.0
2           Allen       25          Texas       15000.0
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
6           Kim         22          South-Hall  45000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

3. 按照 salary 降序排序

sqlite> SELECT * FROM company ORDER BY salary DESC;
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
5           David       27          Texas       85000.0
4           Mark        25          Rich-Mond   65000.0
6           Kim         22          South-Hall  45000.0
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
2           Allen       25          Texas       15000.0
7           James       24          Houston     10000.0

SQLite 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.