MySQL DISTINCT 去重
DISTINCT 关键字用于在 SELECT 查询中去除重复的记录,只返回唯一值。
基本语法
SQL
SELECT DISTINCT 列名 FROM 表名;
单列去重
SQL
-- 创建示例表
CREATE TABLE orders (
id INT PRIMARY KEY,
product VARCHAR(50),
customer VARCHAR(30)
);
INSERT INTO orders VALUES
(1, '手机', '张三'),
(2, '电脑', '李四'),
(3, '手机', '王五'),
(4, '手机', '张三');
-- 查询不重复的产品
SELECT DISTINCT product FROM orders;
-- 结果: 手机, 电脑
-- 查询不重复的客户
SELECT DISTINCT customer FROM orders;
-- 结果: 张三, 李四, 王五
多列去重
SQL
-- 多列组合去重
SELECT DISTINCT product, customer FROM orders;
-- 结果: (手机,张三), (电脑,李四), (手机,王五)
-- 注意: (手机,张三) 只出现一次
-- 对比不去重
SELECT product, customer FROM orders;
-- 结果: (手机,张三), (电脑,李四), (手机,王五), (手机,张三)
DISTINCT 与聚合函数
SQL
-- 统计不重复值的数量
SELECT COUNT(DISTINCT product) AS 产品种类 FROM orders;
-- 结果: 2
SELECT COUNT(DISTINCT customer) AS 客户数量 FROM orders;
-- 结果: 3
DISTINCT 与 NULL
SQL
-- NULL 值也会去重
CREATE TABLE test (val VARCHAR(10));
INSERT INTO test VALUES ('a'), ('a'), (NULL), (NULL);
SELECT DISTINCT val FROM test;
-- 结果: a, NULL
DISTINCT 作用于所有选定列,不是单独作用于每列。
要点总结
- DISTINCT 去除查询结果中的重复行
- 多列时按列组合去重
- 可与 COUNT 等聚合函数配合使用
- NULL 值也参与去重判断
📝 发现内容有误?点击此处直接编辑