SQL关键字快速入门:DISTINCT去重

258 阅读2分钟

 在数据库查询中,我们经常会遇到重复数据的问题。例如:

  • 同一个用户下了多个订单,查询用户列表时出现重复;
  • 查询商品分类时,某些分类被多次列出。

这时候,我们就需要用到 SQL 中非常实用的一个关键字 —— DISTINCT

它可以帮我们从查询结果中去除重复记录,只保留唯一的值。


一、什么是 DISTINCT?

DISTINCT 是 SQL 中用于去重的关键字。它作用于 SELECT 查询中,确保返回的结果集中某列或组合列的值是唯一的。

你可以把它理解为:“相同的值只显示一次”。


二、基本语法

SELECT DISTINCT column_name
FROM table_name;

  • column_name:你希望去重的字段名。
  • 如果需要对多个字段组合去重,也可以这样写:
SELECT DISTINCT column1, column2
FROM table_name;


三、示例讲解

假设我们有一个 orders 表,记录了用户的购买记录:

表:orders

order_iduser_idproduct
11手机
21耳机
32鼠标
42鼠标
53显示器
61手机

 示例1:查询所有不同的用户 ID

SELECT DISTINCT user_id FROM orders;

结果:

user_id
1
2
3

 这样就避免了同一个用户ID多次出现。


 示例2:查询用户购买的不同商品种类

SELECT DISTINCT product FROM orders;

结果:

product
手机
耳机
鼠标
显示器

 这样就能清晰看到有哪些不同的商品被购买过。


 示例3:查询“用户 + 商品”组合的唯一性(多字段去重)

SELECT DISTINCT user_id, product FROM orders;

结果:

user_idproduct
1手机
1耳机
2鼠标
3显示器

 可以看到,虽然用户2买了两次鼠标,但只保留了一条记录;用户1买过两次手机,也只显示一次。


注意

  • DISTINCT 对性能有一定影响,尤其是在大数据量表上使用时,请尽量配合 WHERE 或 LIMIT 使用。
  • DISTINCT 与 GROUP BY 在很多情况下效果相同,但在语义和执行效率上略有差异:
对比项DISTINCTGROUP BY
目的去重分组统计
是否支持聚合函数
性能差异通常更适用于单字段去重更适合复杂分组和统计

四、总结对比表

操作类型SQL示例说明
单字段去重SELECT DISTINCT user_id返回不重复的用户ID
多字段去重SELECT DISTINCT user_id, product返回不重复的用户+商品组合
去除重复行SELECT DISTINCT *整行完全一致的记录只保留一条
与 GROUP BY 对比GROUP BY user_id 等效去重功能但更适合做统计汇总

如果这篇文章对大家有帮助可以点赞关注,你的支持就是我的动力😊!