SQL 如何使用DISTINCT
SQL DISTINCT 子句用于从结果集中移除重复的列。
当我们避免特定 列/表 中的重复值时,可以使用distinct关键字与select关键字结合使用。当使用distinct关键字时,将获取 唯一值 。
- SELECT DISTINCT仅返回不同的 值 。
- DISTINCT从表中消除重复记录。
- DISTINCT可以与聚合函数 COUNT,AVG,MAX 等一起使用。
- DISTINCT仅适用于单个列。
- 不支持使用多个列的DISTINCT。
语法:
SELECT DISTINCT expressions
FROM tables
[WHERE conditions];
参数:
expressions: 我们想要检索的列或计算被称为表达式。
tables: 我们想要检索记录的数据表。FROM子句中只有一个表。
WHERE条件: 满足记录的条件,这是可选的。
注意:
- 当 DISTINCT 子句中提供一个表达式时,查询将返回表达式的唯一值。
- 如果 DISTINCT 子句中提供多个表达式,则查询将检索所列出表达式的唯一组合。
- 在SQL中, DISTINCT 子句不能忽略NULL值。因此,当我们在SQL语句中使用DISTINCT子句时,结果集将包括NULL作为一个不同的值。
示例:
考虑以下 员工 表。
首先,让我们看一下以下SELECT查询返回的重复薪水记录。
SQL> SELECT SALARY FROM EMPLOYEES
ORDER BY SALARY;
当我们执行以上SQL查询时,它会获取所有记录,包括重复的记录。在上面的表中,Newton和Johnson的薪水相同,为20000。
现在,让我们在上面的SELECT查询中使用 DISTINCT 关键字。
SQL> SELECT DISTINCT SALARY FROM EMPLOYEES
ORDER BY SALARY;
上述SQL查询删除了重复记录,并显示了以下结果。
示例:查找列中的唯一值
查看 DISTINCT子句 以查找表中某一列中的唯一值。
我们有一个名为 suppliers 的表,其中包含以下数据:
从上表中,我们将找到唯一的状态。
SELECT DISTINCT state
FROM suppliers
ORDER BY state;
这是 six the 的记录。
这个例子从供应商表中返回唯一的状态,并从结果集中删除重复的记录。
例子:查找多个列中的唯一值
SQL DISTINCT 子句用于从 SELECT 语句中的多个字段中移除重复的记录。
输入 SQL 语句:
SELECT DISTINCT city, state
FROM suppliers
ORDER BY city, state;
输出:
这是8个记录:
该示例返回每个唯一的 城市和州 组合。我们看到 Redwood City 和 California 在结果集中出现。
示例:DISTINCT子句处理NULL值
DISTINCT子句将 NULL 视为 SQL 中的唯一值。我们有一个名为 products 的表,其中包含以下数据。
选择包含空值的字段fruit_id中的唯一值。 输入以下 SQL 语法:
SELECT DISTINCT fruit_id
FROM fruits
ORDER BY category_id;
有四条记录被选中。以下是我们看到的结果:
在上面的示例中,该查询返回了在 category_id 列中的唯一值。我们可以通过结果集中的第一行看到, NULL 是一个特殊值,由 DISTINCT 子句返回。