阅读量:2
在SQL中,如果你想要删除重复的记录,但只保留其中一条,你可以使用以下方法:
- 使用
DELETE和JOIN语句:
假设你有一个名为my_table的表,其中有id(主键)、column1和column2列,你想要删除重复的column1和column2组合,但只保留每组的第一条记录。你可以使用以下查询:
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;
这个查询会删除所有重复的记录,但只保留每组的第一条记录。
- 使用
ROW_NUMBER()窗口函数:
你还可以使用ROW_NUMBER()窗口函数来实现这个目标。假设你的表名为my_table,你想要删除重复的column1和column2组合,但只保留每组的第一条记录。你可以使用以下查询:
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的记录,从而只保留每组的第一条记录。
以上就是关于“sql怎么重复记录只保留一条”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm