当前位置:首页 > sql > 正文

mysql如何过滤重复的数据

  • sql
  • 2024-04-19 12:22:49
  • 536

DISTINCT 关键字用于从一组数据中提取唯一值,并消除重复值。
sql
SELECT DISTINCT column_name
FROM table_name;
方法 2:使用 GROUP BY 语句
GROUP BY 语句将数据根据指定列进行分组,并返回每组中的唯一值。
sql
SELECT column_name
FROM table_name
GROUP BY column_name;
方法 3:使用子查询
可以使用子查询来过滤重复的数据。 子查询返回重复值的列表,然后主查询使用 NOT IN 关键字排除这些值。
sql
SELECT
FROM table_name
WHERE id NOT IN (
SELECT id
FROM (
SELECT id
FROM table_name
GROUP BY id
HAVING COUNT() > 1
) AS subquery
);
方法 4:使用窗函数
窗口函数,如 ROW_NUMBER(),可以为每一行分配一个唯一序号。 然后,可以使用 ROW_NUMBER() 来过滤重复的行。
sql
SELECT
FROM (
SELECT , ROW_NUMBER() OVER (PARTITION BY column_name ORDER BY id) AS row_num
FROM table_name
) AS subquery
WHERE row_num = 1;
方法 5:使用 UNION ALL 语句
UNION ALL 语句将两个或多个结果集组合在一起,并保留重复值。 然后,可以使用 DISTINCT 关键字从合并的结果中去除重复值。
sql
SELECT DISTINCT column_name
FROM (
SELECT column_name FROM table_name1
UNION ALL
SELECT column_name FROM table_name2
) AS subquery;
选择合适的方法
选择哪种方法取决于数据量、性能需求和表的结构。 对于小数据集,方法 1 和 2 是简单有效的选择。 对于大数据集,方法 3 和 4 可以提供更好的性能。 方法 5 适用于需要组合来自多个表的重复值的情况。