📜  PostgreSQL Order by子句(1)

📅  最后修改于: 2023-12-03 14:45:34.762000             🧑  作者: Mango

PostgreSQL Order by子句

在 PostgreSQL 中,我们可以使用 ORDER BY 子句来对查询结果进行排序。

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

其中:

  • SELECT:需要查询的列名
  • FROM:数据源的表名
  • ORDER BY:指定需要排序的列名,并且可以加上 ASC 或 DESC,表示升序和降序,默认为升序排列。
示例

考虑以下结构的 employees 表:

| id | name | age | salary | | ---- | ----- | --- | ------ | | 1 | Alice | 23 | 5000 | | 2 | Bob | 32 | 7000 | | 3 | John | 27 | 6000 | | 4 | Mary | 31 | 8000 | | 5 | Lucy | 24 | 5500 |

现在我们想要让这个表格按照薪水从高到低进行排序,那么我们可以执行以下语句:

SELECT * FROM employees ORDER BY salary DESC;

得到的结果应该是:

| id | name | age | salary | | ---- | ----- | --- | ------ | | 4 | Mary | 31 | 8000 | | 2 | Bob | 32 | 7000 | | 3 | John | 27 | 6000 | | 1 | Alice | 23 | 5000 | | 5 | Lucy | 24 | 5500 |

我们还可以按照多个列进行排序。例如,现在我们想先按照年龄进行升序排序,再根据薪水从高到低进行排序,那么我们可以执行以下语句:

SELECT * FROM employees ORDER BY age ASC, salary DESC;

得到的结果应该是:

| id | name | age | salary | | ---- | ----- | --- | ------ | | 1 | Alice | 23 | 5000 | | 5 | Lucy | 24 | 5500 | | 3 | John | 27 | 6000 | | 2 | Bob | 32 | 7000 | | 4 | Mary | 31 | 8000 |

注意事项
  • 在使用 ORDER BY 子句时,如果涉及到多个表,需要在列名前加上表名或表别名。
  • 当两个数据行在排序所用的列上具有相同的值时,不保证它们在结果中的顺序。
  • 在对字符串类型进行排序时,比较使用的是字典序而非字符串长度。如果想通过字符串长度来对字符串进行排序,可以使用 LENGTH(column) 函数。