从表中删除重复记录 - SQL查询

San*_*anu 6 sql database sql-server sql-delete

我只需要从表中删除重复行,就像我在表中有3个重复行一样,我的查询将从3个重复行中删除2行.

我怎么能得到这个?请帮我.

Muh*_*tar 12

请尝试以下查询,它一定会符合您的目标

SET ROWCOUNT 1
DELETE test
FROM test a
WHERE (SELECT COUNT(*) FROM test b WHERE b.name = a.name) > 1
WHILE @@rowcount > 0
  DELETE test
  FROM test a
  WHERE (SELECT COUNT(*) FROM test b WHERE b.name = a.name) > 1
SET ROWCOUNT 0
Run Code Online (Sandbox Code Playgroud)

其中,测试是你的表名

  • @Muhammad - 你是对的.我也在Dor的答案中留下了评论.这是正确的答案,因为它在Santanu的问题中没有假设任何"额外".我正在玩这个答案,并且不得不承认我只有一小部分原因.它以我还不太了解的方式使用ROWCOUNT和WHILE.总是很高兴学习新东西!...而且我通常是那些在SQL问题上得到不可能答案的人:-( (2认同)
  • 好的 - 我现在得到WHILE - 它没有链接(神奇地)到Delete.SET ROWCOUNT 1确保以下操作一次仅适用于1 ROW而不是完全设置为导向.删除然后删除一行,其中a.name上有重复.WHILE使用生成的@@ rowcount并启动循环.当没有更多重复时,循环就会消失.一切都很酷.*但是* - 我仍在处理从TblName删除TblName其中X构造...它**需要使这项工作 - 只需要找出原因. (2认同)