MySQL三种去重方式比较
MySQL中的去重方法主要有以下三种:
- 使用
DISTINCT
关键字去除重复行。 - 使用
GROUP BY
结合聚合函数,通常用来求去重后的数量。 - 使用
ROW_NUMBER()
窗口函数,这是MySQL 8.0及以上版本提供的新功能。
以下是这三种方法的示例代码:
- 使用
DISTINCT
去重:
SELECT DISTINCT column_name FROM table_name;
- 使用
GROUP BY
去重:
SELECT column_name FROM table_name GROUP BY column_name;
- 使用
ROW_NUMBER()
窗口函数去重(通常用于保留具有最小或最大ID的唯一行):
WITH RankedTable AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY column_name ORDER BY id) AS rn
FROM table_name
)
SELECT *
FROM RankedTable
WHERE rn = 1;
在实际应用中,你需要根据表的结构、需求以及性能考量来选择最适合的去重方法。通常DISTINCT
是最简单直接的去重方式,而GROUP BY
更适合求去重后的计数或其他聚合操作。而ROW_NUMBER()
更为灵活,可以在去重的同时保留特定的记录,例如具有最小ID的记录。
评论已关闭