PostgreSQL DISTINCT

17 Mar 2025 | 4 分钟阅读

在本节中,我们将了解PostgreSQL DISTINCT 子句的工作原理,该子句用于从表中删除匹配的行或数据,并仅获取唯一记录。

注意:DISTINCT 子句仅与 SELECT 命令一起使用。

DISTINCT 子句可用于 SELECT 命令的 SELECT 列表中多个列,并且还会为每个重复组保留一行。

PostgreSQL select distinct 子句的语法

DISTINCT 子句的基本语法如下所示

语法 1

在下面的语法中,column1 中的值用于评估重复项。

如果我们描述了不同的列,则 DISTINCT 子句将根据这些列值的分组来分析匹配的行或数据。

语法 2

如果 column1column2 列具有相似的值,那么要获取重复值,我们可以使用以下语法

Syntax3

PostgreSQL 还提供了 DISTINCT ON 表达式来维护每个重复组的第一个行。因此,对于这些条件,可以使用以下命令

如果持续使用 ORDER BY 子句和 DISTINCT ON (expression) 子句,使结果可以预测,那么这是一个很好的实践。

注意:ORDER BY 子句中最左边的表达式必须与 DISTINCT ON 表达式匹配。

PostgreSQL SELECT DISTINCT 的示例

为了理解 PostgreSQL 中 DISTINCT 子句的工作原理,我们将看一些示例。

为此,我们正在创建一个名为 demo_dist 的新表,并向特定表中插入一些值。在本节中,我们只是在 psql 或 pgAdmin 中执行命令。

要查看 PostgreSQL 的 Pgadmin4Select Distinct 命令的示例,我们需要按照以下步骤操作

步骤 1

我们将借助 CREATE TABLE 命令创建一个表,正如我们在以下命令中看到的那样,我们已经创建了 Demo_dist 表,它包含三个列 Serial_NO、Summer_fruits 和 Winter_fruits

输出

执行上述命令后,我们将收到以下消息窗口; Demo_dist 表已成功创建。

PostgreSQL DISTINCT

步骤 2

创建 Demo_dist 表后,我们将借助下面的 INSERT 命令向其中插入一些值

输出

执行上述命令后,我们将收到以下消息窗口;这些 已成功插入到 Demo_dist 表中。

PostgreSQL DISTINCT

步骤 3

之后,我们将借助下面的 SELECT 命令从 Demo_dist 表中选择数据

输出

一旦我们实现了上述命令,我们将得到以下输出

PostgreSQL DISTINCT

PostgreSQL DISTINCT 一列的示例

在下面的示例中,我们将从 Demo_dist 表的 Summer_fruits 列中选择唯一记录,并执行 ORDER BY 子句,以按顺序获取结果。

输出

实现上述命令后,我们将得到以下输出,我们可以在其中按字母顺序获得 summer _fruits 列的列表。

PostgreSQL DISTINCT

使用 PostgreSQL DISTINCT 的多列示例

在下面的示例中,我们将对一个或多个列使用 DISTINCT 子句,

为了使用 distinct 子句获取不同列的值,我们将采用 Summer_fruits 和 Winter_fruits 列,正如我们可以在以下命令中看到的那样

输出

实现上述命令后,我们将得到以下输出,我们可以在其中按字母顺序获得 summer _fruits 和 Winter_fruits 列的列表。

PostgreSQL DISTINCT

在上面的命令中,我们在 SELECT DISTINCT 子句中描述了 Summer_fruits 和 Winter_fruits 列;这就是为什么 PostgreSQL 连接了 Summer_fruits 和 Winter_fruits 列中的值,以分析行的唯一性。

一旦我们执行了上述命令,它将从 Demo_dist 表中返回 Summer_fruits 和 Winter_fruits 的唯一组合。

注意:Demo_dist 表的两行在 Summer_fruits 和 Winter_fruits 列中都具有 Apples 值。当我们对这两列使用 DISTINCT 时,其中一行将从输出中删除,因为它有重复项。

示例 PostgreSQL DISTINCT ON

在下面的示例中,我们将按 Summer_fruits 和 Winter_fruits 排序结果,并且它会为每个重复值组保留在返回的输出中的第一行。

输出

执行上述命令后,我们将得到以下输出,该输出显示了结果,其中 Summer_fruits 和 winter_fruits 两列没有显示相似的值。

PostgreSQL DISTINCT
下一个主题PostgreSQL LIMIT