我有一个客户表: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 +记录
请帮帮我。
答案 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