sql - 查找并删除表中允许多次出现记录的重复行

标签 sql sql-server t-sql

我有一个表需要删除重复项。然而, table 的设计是为了让每个顾客都可以拥有相同的元素。例如,这是一个屏幕截图:

enter image description here

当我尝试删除重复项时,我还会得到两个客户相同的书号。 绿色区域显示实际重复的书籍,但蓝色区域显示不重复的书籍,因为客户可以借用相同的书籍。

如何仅删除每个客户的相同行?所以绿化面积。

这是我的代码:如果两个客户具有相同的书号,则该代码不起作用。

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/

相关文章:

sql - 禁止基于 WHERE 子句的 SELECT 输出

sql-server - 在没有主键的表的新列上填充行号

php - 当 WHERE 存在时 SQL Server 更新

SQL查找条件不存在的最新日期

c# - 如果在 ASP.NET 中不存在,sql server 的用法?

sql - 从一系列日期时间中获取十分钟间隔

mysql - 如何在 MySQL 中重置 AUTO_INCRMENT

mysql - SQL:返回访问过同一个地方的用户列表

sql - 在 SQL SERVER 2008 中计算几何链接返回

sql-server-2005 - 这种讨厌的递归在 T-SQL 中可能吗?