如何仅在SQL上删除具有相同项目的相同ID?

时间:2015-07-28 05:28:00

标签: sql distinct

我有一个客户表:Cust

 Cust ID CustName
  1         A
  1         B
  2         A
  2         A
  3         A
  3         B

我想删除具有相同CustName的客户ID

的客户

我尝试过使用此代码:

WITH CTE AS(SELECT custnum, custname, BilStAdd, BilCtAdd, Zoneno, cbank_ref,ccelnumber,RN = ROW_NUMBER()OVER(PARTITION BY custnum ORDER BY custnum)FROM cust)

DELETE FROM CTE WHERE RN > 1

但它只会删除只有相同ID的Row。

PS:我只是通过以前的数据库管理员清理数据库左边(就像拥有不同客户的id一样),我知道留下这样的东西太可怕了。 而且我在这里处理10k +记录

请帮帮我。

1 个答案:

答案 0 :(得分:0)

我能够通过在custname中添加PARTITION来确定具有不同custname的custid来解决我的问题。

WITH CTE AS(SELECT custid, custname,RN = ROW_NUMBER()OVER(PARTITION BY custnum,custname ORDER BY custnum)FROM cust) delete from cte where RN > 1