全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-15 5 分钟 ✍️ juanwangdev

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 值也参与去重判断

📝 发现内容有误?点击此处直接编辑

← 上一篇 MySQL 查询数据
下一篇 → MySQL GROUP BY 分组
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库