插件窝 干货文章 掌握 SQL DISTINCT:删除重复项变得简单

掌握 SQL DISTINCT:删除重复项变得简单

DISTINCT SELECT customers 唯一 298    来源:    2025-03-29

SQL DISTINCT:删除重复项变得简单

什么是 DISTINCT

DISTINCT 是 SQL 中的一个关键字,用于从查询结果中删除重复的行。当你只需要查看列中的唯一值时,这个功能特别有用。

基本语法

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

使用示例

1. 单列去重

-- 获取所有唯一的客户所在城市
SELECT DISTINCT city 
FROM customers;

2. 多列去重

-- 获取唯一的城市和国家组合
SELECT DISTINCT city, country
FROM customers;

3. 与 ORDER BY 结合使用

-- 获取唯一的城市并按字母顺序排序
SELECT DISTINCT city
FROM customers
ORDER BY city;

4. 与 COUNT 聚合函数一起使用

-- 计算不同城市的数量
SELECT COUNT(DISTINCT city) 
FROM customers;

注意事项

  1. 性能影响:DISTINCT 操作可能会降低查询性能,特别是在处理大数据集时
  2. NULL 值处理:DISTINCT 将 NULL 视为一个唯一值
  3. 替代方案:有时使用 GROUP BY 可以达到类似效果且性能更好

高级用法

使用 DISTINCT ON (PostgreSQL 特有)

-- 获取每个城市中的第一个客户记录
SELECT DISTINCT ON (city) *
FROM customers
ORDER BY city, customer_id;

在子查询中使用 DISTINCT

-- 找出有订单的所有不同客户
SELECT * FROM customers
WHERE customer_id IN (
    SELECT DISTINCT customer_id 
    FROM orders
);

实际应用场景

  1. 生成报表时去除重复数据
  2. 数据分析时获取唯一值列表
  3. 数据清洗时识别重复记录
  4. 构建下拉菜单的选择项

掌握 DISTINCT 关键字能帮助你更高效地处理数据,确保查询结果准确无误。