PostgreSQL Order by 子句 PostgreSQL WHERE 子句 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 conditions 它是一个可选参数,用于定义检索记录必须满足的条件。 ASC 它也是一个可选参数,用于按表达式按升序对结果集进行排序(默认,如果没有修饰符是提供者)。 DESC 它也是一个可选参数,用于按表达式对结果集进行降序排序。 该[by子句为了工作在以下格式: 它从From 子句开始→之后它将选择特定的列 → 然后通过Order by子句执行。 注意:在 ORDER BY 子句中,由于顺序评估,我们可以在 SELECT 命令中使用列别名。 PostgreSQL ORDER BY 子句示例 在这里,我们将借助以下示例了解PostgreSQL ORDER BY子句的工作: 为此,我们将采用我们在PostgreSQL 教程的前面部分中创建的Employee\表。 下面的屏幕截图定义了Employee\表中存在的不同列: 在上表中,我们将使用order by 子句执行不同类型的运算符。 使用 PostgreSQL ORDER BY 子句按一列对行进行排序 在下面的示例中,我们将使用 ORDER BY 条件以升序获取员工的名字: SELECT first_name, last_name FROM employee ORDER BY first_name ASC; 输出 执行上述命令后,我们将得到以下输出,它按升序获取所有first_name。 我们也可以忽略ORDER BY子句中的ASC选项,因为ASC 选项是默认的,正如我们在下面的命令中看到的: SELECT first_name, last_name FROM employee ORDER BY first_name ; 输出 正如我们在下面的屏幕截图中看到的,我们得到了与上面类似的输出: 使用 PostgreSQL ORDER BY 子句按一列降序对行进行排序 下面的命令从Employee\表中选择第一个 _name和最后**一个 _name并按last_name 列中的值按降序**获取行: SELECT first_name, last_name FROM employee ORDER BY first_name desc ; 输出 执行上面的命令后,我们会得到下面的输出,获取所有FIRST_NAME在递减顺序。 使用 PostgreSQL ORDER BY 子句按多列对行进行排序 下面的命令用于从员工\表中选择first_name 和 last_name并对具有多列的行进行排序: SELECT address, email FROM employee ORDER BY address ASC, email DESC; 输出 执行上述命令后,ORDER BY 子句首先按first_name列中的值获取行。然后它通过last_name列中的值获取行。 在下图中,我们还可以看到我们有两个员工的first_name (john) 和last_name按降序排序。 使用 PostgreSQL ORDER BY 子句按表达式对行进行排序 在下面的示例中,我们将选择地址及其长度,这将根据员工\表中地址的长度获取行: 注意:在 PostgreSQL 中,列别名len是可访问的,并在ORDER BY子句中使用,因为 ORDER BY 子句在 SELECT 条件之后完成。和LENGTH()函数是用来取一个字符串,并得到特定的字符串的长度。 SELECT address, LENGTH (address) len FROM employee ORDER BY len DESC; 输出 执行上面的命令后,我们会得到下面的结果,它描述了employee\表中address列的长度值。 PostgreSQL ORDER BY 条件和 NULL 当我们获取具有 NULL 值的行时,我们可以使用ORDER BY子句的进一步LAST选项定义 NULL 的顺序。 在数据库中,NULL是定义丢失记录或记录时未指定记录的表示。 ORDER BY sort_expresssion [ASC | DESC] [NULLS FIRST | NULLS LAST] 在上面的语法中,我们有两个最重要的选项: 选项 描述 Nulls First 它将 Null 置于进一步的非空值之前。 Nulls Last 它将 Null 放在另一个非空值之后。 为了我们更好地理解,我们将创建一个表如下: CREATE TABLE demo( num varchar ); 执行上述命令后,我们将得到以下消息窗口;该演示\表已成功创建。 创建表后,我们将在演示\表中插入一些值,如下所示: INSERT INTO demo(num) VALUES(1),(2),(null),(3),(4); 输出 执行上述命令后,我们将得到以下消息窗口;该值已在成功插入演示\表。 注意:这里,我们不需要了解 CREATE TABLE 和 INSERT 命令,因为我们想在 pgAdmin 或 psql 中执行该命令来创建演示表并将值插入其中。 以下命令用于从演示表中获取记录: SELECT num FROM demo ORDER BY num; 输出 执行上述命令后,我们将得到输出: 在此示例中,我们使用ORDER BY条件获取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列中演示表的降序获取值: 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 与另一个非空值的顺序。 PostgreSQL WHERE 子句 PostgreSQL 分组依据