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 子句执行。
注意: 由于顺序评估,在ORDER BY子句中,我们可以在SELECT命令中使用列别名。
PostgreSQL ORDER BY子句的示例
在这里,我们将了解
PostgreSQL ORDER BY 子句与以下示例的帮助:
为此,我们将
Employee 表
下面的屏幕截图定义了
Employee 中存在的不同列表:
在上表中,我们将使用
order by子句来执行
不同类型的运算符。
使用PostgreSQL ORDER BY子句按一列对行进行排序
在下面的示例中,我们将使用ORDER BY条件按升序按名称获取员工:
SELECT first_name, last_name
FROM employee
ORDER BY first_name ASC;
输出
执行以上命令后,我们将获得以下输出,该输出按升序获取所有
first_name 。
我们也可以忽略
ASC
ORDER BY 子句中的选项,因为
ASC选项是默认设置,如下面的命令所示:
SELECT first_name, last_name
FROM employee
ORDER BY first_name ;
输出
如下面的屏幕快照所示,我们得到的输出与上面类似:
使用PostgreSQL ORDER BY子句按一行以降序对行进行排序
以下命令从
Employee 表中选择
名称和
姓氏,并按中的值获取行
降序中的last_name列:
SELECT first_name, last_name
FROM employee
ORDER BY first_name desc ;
输出
执行上述命令后,我们将获得以下输出,该输出将在
降序中获取所有 first_name 命令。
使用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子句按表达式对行进行排序
在下面的示例中,我们将选择地址及其长度,
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条件和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 表已成功创建。
创建表后,我们将在
demo 表中插入一些值,如下所示:
INSERT INTO demo(num)
VALUES(1),(2),(null),(3),(4);
输出
执行以上命令后,将显示以下消息窗口;
值已成功插入到
demo 表中。
注意: 这里,我们不需要了解CREATE TABLE和INSERT命令,因为我们想在pgAdmin或psql中执行该命令以创建演示表并插入值进去。
以下命令用于从演示表中获取记录:
SELECT num
FROM demo
ORDER BY num;
输出
执行上述命令后,我们将获得输出:
在此示例中,我们使用
ORDER BY 条件在
demo 中获取值 表在
num 列中的升序,将NULL放在另一个值之后。因此,默认情况下,如果我们使用
ASC 选项,则
ORDER BY 子句采用
NULLS LAST 选项。
因此,下面的命令用于获取类似的结果:
SELECT num
FROM demo
ORDER BY num nullS LAST;
输出
执行上述命令后,我们将得到以下结果:
我们将使用
NULLS FIRST 选项将
NULL 放在进一步的非空值之前值如下:
SELECT num
FROM demo
ORDER BY num nullS FIRST;
输出
执行上述命令后,我们将得到以下结果:
然后,我们将使用以下命令在
num 列中以
demo 表的降序获取值。帮助:
SELECT num
FROM demo
ORDER BY num DESC;
输出
一旦执行上述命令,我们将获得以下输出:
同时执行
ASC和DESC 命令后,我们可以看到
输出 ,默认情况下,带有
DESC 选项的
ORDER BY条件使用
NULLS FIRST 选项。
颠倒顺序
我们将使用
NULLS LAST选项颠倒特定表中的顺序。
SELECT num
FROM demo
ORDER BY num DESC nullS LAST;
输出
执行上述命令后,我们将得到以下结果:
概述
我们在 SELECT 命令中使用 ORDER BY 子句来获取特定表中的行。
我们使用 ASC选项以升序获取行,以及 DESC 选项以降序获取行订单。
默认情况下,ORDER BY条件使用 ASC 函数。
我们使用 NULLS FIRST和NULLS LAST 选项来描述NULL与另一个非null值的顺序。