DISTINCT 中 PostgreSQL:选择、排序和限制(示例)
⚡ 智能摘要
DISTINCT 中 PostgreSQL 用于 SELECT 语句以删除重复行并仅返回唯一值。它涵盖了 SELECT 语法、SQL Shell 和 pgAdmin、单列和多列的 DISTINCT 语句,以及 DISTINCT 与 GROUP BY 的区别。

您可以使用 SELECT 语句从表中检索数据。
语法:
SELECT [column names] FROM [table_name]
在这里,
- 列名: 要检索其值的列的名称。
- 从: FROM 子句为 SELECT 定义一个或多个源表。
- 表名: 要查询的现有表的名称。
什么是 DISTINCT? PostgreSQL?
此 DISTINCT, 条款在 PostgreSQL 与 SELECT 语句一起使用,可以从结果集中删除重复行。当列包含重复值时,SELECT DISTINCT 只返回唯一值。ping 每组重复项对应一行。当您需要一份不包含重复项的唯一条目列表时,例如唯一的客户所在城市或产品类别,这种方法非常有用。
DISTINCT 函数会评估 SELECT 语句中列出的所有列,以确定某一行是否唯一。 PostgreSQL 它还提供了 DISTINCT ON 函数,该函数返回指定表达式中每个不同值对应的第一行。您可以将 DISTINCT 与 ORDER BY 结合使用来控制要显示的行,也可以与 LIMIT 结合使用来限制结果数量。
PostgreSQL SQL Shell 中的 Select 语句
步骤1) 我们有一个名为“tutorials”的表,包含两列:“id”和“tutorial_name”。让我们查询一下这个表。使用以下查询语句列出表中的数据:
SELECT id,tutorial_name FROM tutorials;
注意: 使用命令 \c 连接到包含要查询的表的数据库。在本例中,我们连接到数据库 guru99。
步骤2) 如果要查看特定表格中的所有列,可以使用星号 (*) 通配符。这意味着它会检查所有可能性,因此会返回所有列。
SELECT * FROM tutorials;
它显示教程表的所有记录。
步骤3) 您可以使用 ORDER 子句根据特定列对表中的数据进行排序。ORDER 子句按 A 到 Z 的顺序组织数据。
SELECT * FROM tutorials ORDER BY id;
您可以在“ORDER BY”语句后使用“DESC”从 Z 到 A 排序。
SELECT * FROM tutorials ORDER BY id DESC;
步骤4) SELECT DISTINCT 在 PostgreSQL 子句可用于从结果中删除重复的行。它为每组重复项保留一行。
Syntax: SELECT DISTINCT column_1 FROM table_name;
让我们使用 DISTINCT 查询从 Postgres 表中选择不同的 id 值,教程如下。 PostgreSQL:
SELECT DISTINCT(id) FROM tutorials;
步骤5) 您可以使用 PostgreSQL LIMIT 子句用于限制 SELECT 查询返回的记录数。
SELECT * FROM tutorials LIMIT 4;
PostgreSQL pgAdmin 中的选择语句
步骤1) 在对象树中:
- 右键单击表格。
- 选择脚本。
- 点击“选择脚本”。
步骤2) 右侧面板中:
- 如有需要,请编辑 SELECT 查询语句。
- 点击闪电图标。
- 观察输出结果。
对多列进行去重
SELECT DISTINCT 子句也可以应用于多个列。当您在 DISTINCT 后列出多个列时, PostgreSQL 将这两列组合视为一个整体,并删除该组合重复的行。
Syntax: SELECT DISTINCT column_1, column_2 FROM table_name;
例如,要从 tutorials 表中返回 tutorial_name 和 id 的唯一组合:
SELECT DISTINCT tutorial_name, id FROM tutorials;
在这种情况下,只有当 tutorial_name 和 id 都与另一行匹配时,才会删除该行。如果两行具有相同的 tutorial_name 但 id 值不同,则两者都会保留,因为组合仍然是唯一的。务必记住这一点:当选择多个列时,DISTINCT 函数不会对单个列进行去重;它会对所有选定的列一起进行去重。
DISTINCT 与 GROUP BY 的区别 PostgreSQL
DISTINCT 和 GROUP BY 都可以删除重复值,但它们的用途不同:
- DISTINCT, 仅返回结果中的唯一行,最适合只需要去重列表的情况。
- 通过...分组 将具有相同值的行分组,以便您可以应用聚合函数,例如 COUNT、SUM 或 AVG 到每个小组。
例如,以下两个查询都返回唯一的 id 值:
SELECT DISTINCT id FROM tutorials; SELECT id FROM tutorials GROUP BY id;
对于仅包含唯一值的列表,请使用 DISTINCT;而当需要对每个分组进行计算时,例如统计有多少教程共享同一个 ID,则应使用 GROUP BY。对于简单的查询,两者的性能通常相近,但只要涉及聚合,就必须使用 GROUP BY。
备忘单
SELECT [column names] FROM [table_name] [clause]
以下是各项参数:
- 列名: 要检索其值的列的名称。
- 从: FROM 子句为 SELECT 定义一个或多个源表。
- 表名: 要查询的现有表的名称。
各项条款如下:
| 命令 | 描述 |
|---|---|
| * | 获取表中所有行的记录。 |
| DISTINCT, | DISTINCT 中 PostgreSQL 帮助您从结果中删除重复项。 |
| ORDER BY | 根据指定列对行进行排序。默认排序方式为升序。使用关键字 DESC 可按降序排序。 |
| 极限 | 限制 PostgreSQL 限制查询返回的记录数。 |








