sql怎么重复记录只保留一条

avatar
作者
筋斗云
阅读量:0

在SQL中,如果你想要删除重复的记录,但只保留其中一条,你可以使用以下方法:

  1. 使用DELETEJOIN语句:

假设你有一个名为my_table的表,其中有id(主键)、column1column2列,你想要删除重复的column1column2组合,但只保留每组的第一条记录。你可以使用以下查询:

DELETE t1 FROM my_table t1 JOIN my_table t2 ON t1.column1 = t2.column1 AND t1.column2 = t2.column2 AND t1.id > t2.id; 

这个查询会删除所有重复的记录,但只保留每组的第一条记录。

  1. 使用ROW_NUMBER()窗口函数:

你还可以使用ROW_NUMBER()窗口函数来实现这个目标。假设你的表名为my_table,你想要删除重复的column1column2组合,但只保留每组的第一条记录。你可以使用以下查询:

WITH ranked_table AS (   SELECT *,          ROW_NUMBER() OVER (PARTITION BY column1, column2 ORDER BY id) AS row_num   FROM my_table ) DELETE FROM ranked_table WHERE row_num > 1; 

这个查询首先使用ROW_NUMBER()函数为每组重复的记录分配一个行号,然后删除所有行号大于1的记录,从而只保留每组的第一条记录。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!