sql - 删除重复多次的 ID,但保留第一次出现的 ID

标签 sql sql-server sql-delete

我有一个表,需要删除 ID 第二次及后续出现的整行,但保留第一次出现的 suCustomerIDBy 。 M表有主键ID和重复的CustometID。因此,我需要删除具有重复 CustomerID 的所有行。

Delete From Table1 where ID IN (select ID From Table1 where count(distinct CutomerID) >=2 group by CustomerID)

上面的代码将删除所有 id,包括每个 ID 的第一次出现,但我需要保留它们的第一次出现。请指教。

最佳答案

此代码应该可以满足您的需要。

如果您可以提供 Table1 的完整表架构,可能会有更好的方法

如果您获取行号,然后忽略前几个:

;WITH cte 
AS 
(
  SELECT ID, 
     ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) AS Rn
  FROM [Table1]
)
DELETE cte WHERE Rn > 1

关于sql - 删除重复多次的 ID,但保留第一次出现的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37219851/

相关文章:

sql - 唯一约束的命名约定

c# - 在以方法作为参数的方法中传递字符串

sql - 由于级联触发器更新此行,因此未删除行

mysql - MYSQL数据千万以上,如何删除重复数据?

sql - 满足条件的 COUNT 行(在具有特定条件的行处重置)

MySQL - 有没有办法在满足给定条件后丢弃排序选择中的记录?

python - Azure Databricks 错误 : AzureException: hadoop_azure_shaded. com.microsoft.azure.storage.StorageException:服务器无法对请求进行身份验证

mysql - SQL如何获取不包含产品的类别?

sql-server - SQL Server 存储过程中的表变量插入性能不佳

mysql - 如何使用另一个条件(例如 "name"而不是mysql中的id)从共享id的数据库中删除行