MySQL去重数据的5种方法:使用DISTINCT关键字,仅保留唯一值;使用GROUP BY子句,根据指定列分组,只保留每组一行;使用窗口函数(MySQL 8.0及以上),生成唯一行号并过滤为1的行;使用UNION ALL与DISTINCT,合并结果集并去除重复项;使用WITH子句,定义中间结果集并去重后再用于主查询。
如何使用 MySQL 去除重复数据
1. 使用 DISTINCT 关键字
最简单的方法是使用 DISTINCT 关键字。它将从结果中删除重复的行,仅返回每个唯一值一行。
SELECT DISTINCT column_name(s) FROM table_name;
2. 使用 GROUP BY 子句
GROUP BY 子句也可以用于去重,但它将根据指定的列对结果进行分组,只返回每个组中的一行。
SELECT column_name(s) FROM table_name GROUP BY column_name;
3. 使用窗口函数
MySQL 8.0 及更高版本还引入了窗口函数,可以用于去重。例如,ROW_NUMBER() 函数可以生成每个行的唯一行号。
SELECT column_name(s) FROM ( SELECT column_name(s), ROW_NUMBER() OVER (PARTITION BY column_name ORDER BY column_name) AS row_num FROM table_name ) AS subquery WHERE row_num = 1;
4. 使用 UNION ALL 与 DISTINCT
UNION ALL 操作符可以连接两个或多个结果集,同时保留所有行。通过与 DISTINCT 关键字结合使用,可以从合并的结果集中删除重复项。
SELECT DISTINCT column_name(s) FROM ( SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2 ) AS subquery;
5. 使用 WITH 子句
WITH 子句可以定义一个中间结果集,以便在主查询中使用。该中间结果集可以去重,然后再用于主查询。
WITH subquery AS ( SELECT DISTINCT column_name(s) FROM table_name ) SELECT column_name(s) FROM subquery;
以上就是mysql怎么去重的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号