SQL Server 删除重复记录
有张表格之前没有设计关键字段的唯一约束,导致有时候执行插入操作时不小心执行了多次就出现了重复记录,后面重新加入唯一约束,由于已经有了重复记录,无法添加,需要先删除重复记录。
看了网上的一些删除重复记录的方法(好像都是转载于同一篇文章,至少看了十几篇都是同样的内容),其中一个链接:http://blog.csdn.net/anya/article/details/6407280
自己现在是需要建立多字段唯一约束(非主键),用文中的方法是不行的,反正在SQL Server 2012中是无法通过的。改写了下,如下:
1、查询重复记录:
1 2 3 4 5 6 | SELECT * FROM dbo. Table T WHERE EXISTS ( SELECT 字段1, 字段2, 字段3 FROM dbo.TableSign WHERE 字段1= T.字段1 AND 字段2= T.字段2 AND 字段3 = T.字段3 GROUP BY 字段1, 字段2, 字段3 HAVING COUNT (*) > 1) AND T.SelfID NOT IN ( SELECT MIN (SelfID) FROM dbo. Table GROUP BY 字段1, 字段2, 字段3 HAVING COUNT (*) > 1) 其中:字段1, 字段2, 字段3指需要建立唯一约束的三个字段,SelfID指表 Table 中的一个自增字段。 |
2、删除重复记录,只保留SelfID最小的记录,也就是第一次插入的记录:
1 2 3 4 5 6 7 8 | DELETE FROM dbo.TableSign WHERE SelfID IN ( SELECT SelfID FROM dbo. Table T WHERE EXISTS ( SELECT 字段1, 字段2, 字段3 FROM dbo.TableSign WHERE 字段1= T.字段1 AND 字段2= T.字段2 AND 字段3 = T.字段3 GROUP BY 字段1, 字段2, 字段3 HAVING COUNT (*) > 1) AND T.SelfID NOT IN ( SELECT MIN (SelfID) FROM dbo. Table GROUP BY 字段1, 字段2, 字段3 HAVING COUNT (*) > 1)) |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步