PostgreSQL教程

PostgreSQL ORDER BY

在本节中,我们将学习PostgreSQL ORDER BY条件,该条件用于对 中的数据进行排序>升序或降序。并根据一列或多列来获取记录。
从表中获取记录时,SELECT命令以不确定的顺序返回行。为此,我们将在SELECT语句中使用ORDER BY子句对结果集的行进行排序。
ORDER BY 子句允许我们对升序或降序的SELECT 条件取决于排序表达式。

语法PostgreSQL Order by子句

PostgreSQL ORDER BY条件的语法如下:
SELECT column-list  
FROM table_name  
[WHERE condition]  
[ORDER BY column1, column2, .. columnN] [ASC | DESC];  
以下是上面命令中使用的参数:
参数 说明
column_list 它用于定义我们要检索的列或计算。
table_name 它用于描述我们要从中检索记录的表。并且 FROM 子句中必须至少列出一个表。
WHERE condition 这是一个可选参数,用于定义检索记录必须满足的条件。
ASC 它也是一个可选参数,用于按表达式升序对结果集进行排序(默认情况下,如果没有提供修饰符的话)。
DESC 它也是一个可选参数,用于按表达式降序对结果集进行排序。
order by子句以以下格式工作:
From子句→开始,然后 选择特定列→然后按 Order by 子句执行。
PostgreSQL Order by子句
注意: 由于顺序评估,在ORDER BY子句中,我们可以在SELECT命令中使用列别名。

PostgreSQL ORDER BY子句的示例

在这里,我们将了解 PostgreSQL ORDER BY 子句与以下示例的帮助:
为此,我们将 Employee
下面的屏幕截图定义了 Employee 中存在的不同列表:
PostgreSQL Order by子句
在上表中,我们将使用 order by子句来执行 不同类型的运算符
使用PostgreSQL ORDER BY子句按一列对行进行排序
在下面的示例中,我们将使用ORDER BY条件按升序按名称获取员工:
SELECT first_name, last_name
FROM employee
ORDER BY first_name ASC;
输出
执行以上命令后,我们将获得以下输出,该输出按升序获取所有 first_name
PostgreSQL Order by子句
我们也可以忽略 ASC ORDER BY 子句中的选项,因为 ASC选项是默认设置,如下面的命令所示:
SELECT first_name, last_name
FROM employee
ORDER BY first_name ;
输出
如下面的屏幕快照所示,我们得到的输出与上面类似:
PostgreSQL Order by子句

使用PostgreSQL ORDER BY子句按一行以降序对行进行排序

以下命令从 Employee 表中选择 名称姓氏,并按中的值获取行 降序中的last_name列:
SELECT first_name, last_name
FROM employee
ORDER BY first_name desc ;
输出
执行上述命令后,我们将获得以下输出,该输出将在 降序中获取所有 first_name 命令。
PostgreSQL Order by子句

使用PostgreSQL ORDER BY子句按多列对行进行排序

以下命令用于从 Employee 中选择 名字和姓氏表,并对包含多列的行进行排序:
SELECT address, email
FROM employee
ORDER BY address ASC, email DESC;
输出
执行上述命令后, ORDER BY子句首先通过 first_name 中的值获取行。 strong>列。然后,它通过 last_name 列中的值获取行。
在下图中,我们还可以看到我们有两名雇员,他们有相似的 first_name (约翰)和 last_name (降序)。
PostgreSQL Order by子句

使用PostgreSQL ORDER BY子句按表达式对行进行排序

在下面的示例中,我们将选择地址及其长度, employee 表中按地址长度排列的行:
注意: 在PostgreSQL中,可以访问列别名 len ,并在 ORDER BY 子句中用作ORDER BY子句,是在SELECT条件之后完成的。 LENGTH()函数用于获取字符串并获取特定字符串的长度。
SELECT address,
LENGTH (address) len
FROM employee 
ORDER BY len DESC;
输出
执行上述命令后,我们将得到以下结果,该结果描述了 address 列中 地址的长度值> employee 表。
PostgreSQL Order by子句

PostgreSQL ORDER BY条件和NULL

当我们获取具有NULL值的行时,可以使用其他 LAST 选项定义NULL的顺序。 ORDER BY 子句的形式。
在数据库中, NULL 是表示缺少的记录或在记录时未指定的记录的表示形式。
ORDER BY sort_expresssion [ASC | DESC] [NULLS FIRST |NULLS LAST]
在以上语法中,我们有两个最重要使用的选项:
选项 说明
NULLS FIRST 它将Null放置在其他非null值之前。
NULLS LAST 它将Null放置在另一个非null值之后。
为了更好地理解,我们将创建一个表,如下所示:
CREATE TABLE demo(
  num varchar
);
执行上述命令后,我们将获得以下消息窗口; demo 表已成功创建。
 PostgreSQL Order by子句
创建表后,我们将在 demo 表中插入一些值,如下所示:
INSERT INTO demo(num)
VALUES(1),(2),(null),(3),(4);
输出
执行以上命令后,将显示以下消息窗口; 已成功插入到 demo 表中。
PostgreSQL Order by子句
注意: 这里,我们不需要了解CREATE TABLE和INSERT命令,因为我们想在pgAdmin或psql中执行该命令以创建演示表并插入值进去。
以下命令用于从演示表中获取记录:
SELECT num
FROM demo
ORDER BY num;
输出
执行上述命令后,我们将获得输出:
PostgreSQL Order by子句
在此示例中,我们使用 ORDER BY 条件在 demo 中获取值 表在 num 列中的升序,将NULL放在另一个值之后。因此,默认情况下,如果我们使用 ASC 选项,则 ORDER BY 子句采用 NULLS LAST 选项。
因此,下面的命令用于获取类似的结果:
SELECT num
FROM demo
ORDER BY num nullS LAST;
输出
执行上述命令后,我们将得到以下结果:
PostgreSQL Order by子句
我们将使用 NULLS FIRST 选项将 NULL 放在进一步的非空值之前值如下:
SELECT num
FROM demo
ORDER BY num nullS FIRST;
输出
执行上述命令后,我们将得到以下结果:
PostgreSQL Order by子句
然后,我们将使用以下命令在 num 列中以 demo 表的降序获取值。帮助:
SELECT num
FROM demo
ORDER BY num DESC;
输出
一旦执行上述命令,我们将获得以下输出:
PostgreSQL Order by子句
同时执行 ASC和DESC 命令后,我们可以看到 输出 ,默认情况下,带有 DESC 选项的 ORDER BY条件使用 NULLS FIRST 选项。

颠倒顺序

我们将使用 NULLS LAST选项颠倒特定表中的顺序。
SELECT num
FROM demo
ORDER BY num DESC nullS LAST;
输出
执行上述命令后,我们将得到以下结果:
PostgreSQL Order by子句

概述

我们在 SELECT 命令中使用 ORDER BY 子句来获取特定表中的行。 我们使用 ASC选项升序获取行,以及 DESC 选项以降序获取行订单 默认情况下,ORDER BY条件使用 ASC 函数。 我们使用 NULLS FIRST和NULLS LAST 选项来描述NULL与另一个非null值的顺序。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4