mysql查询结果去重怎么实现_mysql查询结果去重实现方法

来源:这里教程网 时间:2026-02-28 20:20:18 作者:

在MySQL中,如果查询结果包含重复数据,可以通过多种方式实现去重。最常用的方法是使用 DISTINCT 关键字,也可以结合 GROUP BY 子句来达到目的。下面介绍几种常见的去重实现方法。

DISTINCT 去重

当需要去除某列或多个列的重复值时,可以使用 DISTINCT。它会返回唯一不同的记录。

对单列去重:获取某一列的不重复值。

SELECT DISTINCT column_name FROM table_name;

对多列去重:只有当多个字段组合完全相同时才会去重。

SELECT DISTINCT col1, col2 FROM table_name;

GROUP BY 实现去重

GROUP BY 通常用于分组统计,但也能实现去重效果,尤其适合需要配合聚合函数(如 COUNT、MAX 等)的场景。

按字段分组,每组只显示一行,达到去重目的。

SELECT col1, col2 FROM table_name GROUP BY col1, col2;

可结合聚合函数获取更多信息,比如每组的记录数。

SELECT col1, COUNT(*) FROM table_name GROUP BY col1;

去重并保留一条完整记录(如按ID最小)

有时表中存在完全重复的行,或想根据某个字段去重但保留一条完整记录,可以使用子查询或窗口函数(MySQL 8.0+)。

使用子查询和 MIN(ID) 去重:

SELECT * FROM table_name t1 WHERE id = (SELECT MIN(id) FROM table_name t2 WHERE t2.key = t1.key);

使用 ROW_NUMBER() 窗口函数(推荐处理大数据量):

SELECT * FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY key_col ORDER BY id) AS rn FROM table_name) t WHERE rn = 1;

基本上就这些常用方法。DISTINCT 最简单直接,适合简单去重;GROUP BY 更灵活,支持统计;复杂场景建议用窗口函数。选择哪种方式取决于你的数据结构和去重要求。

相关推荐