我有一个表需要删除重复项。然而, table 的设计是为了让每个顾客都可以拥有相同的元素。例如,这是一个屏幕截图:
当我尝试删除重复项时,我还会得到两个客户相同的书号。 绿色区域显示实际重复的书籍,但蓝色区域显示不重复的书籍,因为客户可以借用相同的书籍。
如何仅删除每个客户的相同行?所以绿化面积。
这是我的代码:如果两个客户具有相同的书号,则该代码不起作用。
WITH CTE AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY BookNumber ORDER BY BookNumber DESC) AS DUPS
FROM Store.Books
)
SELECT * FROM CTE WHERE DUPS > 1
最佳答案
下面的查询应该为您提供带有 customerID 的所有重复书号的列表,您所需要做的就是一个简单的删除语句,其结果即可删除重复记录
SELECT count(bookNumber), booknumber, customerID FROM TableName GROUP BY booknumber, customerID having count(booknumber)> 1
关于sql - 查找并删除表中允许多次出现记录的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18268027/