目录

  1. SQL SELECT DISTINCT 语句简介
  2. SELECT DISTINCT 语法
  3. SELECT DISTINCT 示例
  4. 使用 SELECT DISTINCT 的常见场景
  5. SELECT DISTINCT 与其他子句组合使用
  6. 参考资料

SQL SELECT DISTINCT 语句简介

SELECT DISTINCT 语句是 SQL 查询中用于去除重复记录的工具。它从数据库中检索唯一(不重复)的数据行。在查询时使用 DISTINCT 关键字,可以确保查询结果中没有重复的行,通常用于获取列中的唯一值或去除重复的数据。

在使用 SELECT DISTINCT 时,整个结果集(不仅仅是某个列)都将基于唯一值来进行筛选。如果选择多个列,则 DISTINCT 会保证这几个列组合的值是唯一的。


SELECT DISTINCT 语法

SELECT DISTINCT 的基本语法如下:

SELECT DISTINCT column1, column2, ...
FROM table_name;

  • DISTINCT:表示查询结果中去除重复的数据。
  • column1, column2, ...:指定查询的列,可以选择一个或多个列。
  • FROM:指定要查询的表名。

示例

SELECT DISTINCT department FROM employees;

  • 该查询将返回 employees 表中所有唯一的部门名称。

SELECT DISTINCT 示例

示例 1:去除重复值

假设有一个 orders 表,存储了客户的订单信息,其中 customer_id 列表示客户的 ID。查询该表时,可能存在多个相同的客户 ID 值。如果我们只需要列出不同的客户 ID,则可以使用 DISTINCT

SELECT DISTINCT customer_id FROM orders;

  • 该查询将返回 orders 表中唯一的客户 ID。

示例 2:查询多个列的唯一组合

DISTINCT 可以与多个列一起使用,以确保多个列组合的唯一性。

SELECT DISTINCT product_id, customer_id FROM orders;

  • 该查询返回唯一的 product_idcustomer_id 组合。

示例 3:选择不同的城市

假设我们有一个 employees 表,其中包含员工的 namecity 信息。我们想查询所有不同的城市:

SELECT DISTINCT city FROM employees;

  • 该查询返回 employees 表中唯一的城市列表。

使用 SELECT DISTINCT 的常见场景

  1. 获取唯一的记录:当我们需要获取一个列或多个列中不重复的值时,DISTINCT 很有用。例如,获取所有不同的产品、客户或城市。 示例: SELECT DISTINCT city FROM customers;
  2. 数据去重:在执行数据查询时,有时数据表可能包含重复记录,使用 DISTINCT 可以去除这些重复记录,确保返回的结果集不包含重复项。 示例: SELECT DISTINCT email FROM users;
  3. 数据分析和报表DISTINCT 常用于生成报表或数据分析时,帮助提取唯一的业务数据,如产品种类、销售区域等。 示例: SELECT DISTINCT category FROM products;

SELECT DISTINCT 与其他子句组合使用

DISTINCT 语句常常与其他 SQL 子句结合使用,以进一步优化查询结果。以下是一些常见的组合方式:

1. ORDER BY 子句结合使用

DISTINCT 可以与 ORDER BY 子句结合,按指定的列排序返回唯一的记录。

SELECT DISTINCT department FROM employees ORDER BY department;

  • 该查询将返回唯一的部门名称,并按字母顺序排序。

2. WHERE 子句结合使用

DISTINCT 可以与 WHERE 子句结合,先根据条件筛选数据,然后返回唯一的记录。

SELECT DISTINCT city FROM customers WHERE country = 'USA';

  • 该查询将返回美国 (USA) 中所有不同的城市。

3. 与聚合函数结合使用

在某些情况下,DISTINCT 也可以与聚合函数一起使用,用来对唯一的值进行统计。

SELECT COUNT(DISTINCT customer_id) FROM orders;

  • 该查询返回不同客户的订单数量。

参考资料