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怎么去重的详细内容。