DECLARE @Count INT = 1WHILE @Count > 0BEGINDELETE TB FROM TableName TB WHERE TB.ID IN (SELECT MIN(ID) FROM TableName TB2GROUP BY TB2.Column1,TB2.Column2,...TB2.ColumnNHAVING COUNT(1) > 1);SET @Count = @@ROWCOUNT;END
这里使用了循环删除,并不是最优的方法,欢迎园友不吝批评指正 。
其实还有一种方法是先查询重复的数据,然后在重复数据中保留一条 。下面用例子说明 。
文章插图
例如表City有如下的数据:
文章插图
查询出重复的数据,Id只保留其中一个
文章插图
SELECT MIN(Id) Id,Name FROM dbo.City GROUP BY NameHAVING COUNT(1) >1
然后使用删除时Join上面的表
【SQL删除指定条件的重复数据,只保留一条】DELETE C FROM City C JOIN (SELECT MIN(Id) Id,Name FROM dbo.CityGROUP BY NameHAVING COUNT(1) >1) TMP ON C.Name = TMP.Name AND C.Id <> TMP.Id
另外一种方法是园友指出的使用()来处理,感谢提供思路,这也是一种方法 。
- Excel Speedoffice如何计算指定日期后续N天的日期
- mysql数据库关于中文符号的解决
- 【MYSQL】比前一天高的温度
- qmdownload是什么文件可以删除吗
- 昨天的 Sql笔试题第二天-查询与之前日期相比温度更高的所有日期
- maven项目如何打包运行指定java程序(maven-shade
- qq空间我看过谁怎么删除不了
- wallpaper取消订阅是不是就删除了
- 2 Oracle快速入门-sqlplus常用命令
- Word文件如何删除文字出现红色波浪线?