如何在 SQL 中使用 DISTINCT?

2025年3月17日 | 阅读 3 分钟

SQL DISTINCT 子句用于从结果集中删除重复的列。

DISTINCT 关键字与 SELECT 关键字结合使用。当我们需要避免特定列/表中存在的重复值时,它很有用。当我们使用 DISTINCT 关键字时,会获取唯一值

  • SELECT DISTINCT 只返回不同的(唯一)值。
  • DISTINCT 从表中消除重复记录。
  • DISTINCT 可以与聚合函数一起使用:COUNT、AVG、MAX 等。
  • DISTINCT 作用于单个列。
  • DISTINCT 不支持多列。

语法

参数

表达式:我们想要检索的列或计算称为表达式。

表:我们想要检索记录的表。FROM 子句中只有一个表。

WHERE 条件:满足记录的条件,它是可选的。

注意

  • 当在 DISTINCT 子句中提供一个表达式时,查询将返回表达式的唯一值。
  • 如果在此 DISTINCT 子句中提供了多个表达式,则查询将检索列出的表达式的唯一组合。
  • 在 SQL 中,DISTINCT 子句不能忽略 NULL 值。因此,当我们在 SQL 语句中使用 DISTINCT 子句时,我们的结果集将包含 NULL 作为唯一值。

示例

考虑以下 EMPLOYEES 表。

How to use distinct in SQL

首先,让我们看看下面的 SELECT 查询返回重复的薪水记录。

当我们执行上述 SQL 查询时,它会获取所有记录,包括重复记录。在上表中,Newton 和 Johnson 的薪水都是 20000。

How to use distinct in SQL

现在,让我们在上述 SELECT 查询中使用 DISTINCT 关键字。

上述 SQL 查询删除了重复记录并显示以下结果。

How to use distinct in SQL

示例:查找列中的唯一值

查看 DISTINCT 子句以查找表中一列中的唯一值。

我们有一个名为 suppliers 的表,包含以下数据。

How to use distinct in SQL

从上表中,我们将查找唯一的州。

这些是六条记录。

How to use distinct in SQL

此示例从 suppliers 表中返回唯一的 state,并从结果集中删除重复记录。

示例:查找多列中的唯一值

SQL DISTINCT 子句用于从 SELECT 语句中的多个字段中删除重复记录。

输入 SQL 语句

输出

这些是 8 条记录

How to use distinct in SQL

此示例返回每个唯一的 城市和州 组合。我们看到 Redwood CityCalifornia 出现在结果集中。

示例:DISTINCT 子句处理 NULL 值

DISTINCT 子句将 NULL 视为 SQL 中的唯一值。我们有一个名为 products 的表,其中包含以下数据。

How to use distinct in SQL

从包含 null 值的字段 fruit_id 中选择唯一值。输入以下 SQL 语法

选择了四条记录。这些是我们下面看到的结果

How to use distinct in SQL

在上面的示例中,查询返回 category_id 列中的唯一值。我们看到结果集中的第一行,NULLDISTINCT 子句返回的一个特殊值。