加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 如何删除完全重复的行

发布时间:2020-12-12 06:40:51 所属栏目:MsSql教程 来源:网络整理
导读:假设我的表中有重复的行,而且我的数据库设计是第3类: – Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (1,'Cinthol','cosmetic soap','soap');Insert Into tblProduct (ProductId,'Lux','Crowning Glory',Category) Values
假设我的表中有重复的行,而且我的数据库设计是第3类: –
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (1,'Cinthol','cosmetic soap','soap');
Insert Into tblProduct (ProductId,'Lux','Crowning Glory',Category) Values (2,'nice soap',Category) Values (3,'soap');

我希望每个表中只有1个实例存在于我的表中.因此,应删除第2行,第3行和最后一行完全相同的行.我可以为此写什么查询?可以在不创建临时表的情况下完成吗?只需一个查询?

提前致谢 :)

解决方法

试试这个 – 它将删除表中的所有重复项:
;WITH duplicates AS
(
    SELECT 
       ProductID,Category,ROW_NUMBER() OVER (PARTITION BY ProductID,ProductName
                          ORDER BY ProductID) 'RowNum'
    FROM dbo.tblProduct
)
DELETE FROM duplicates
WHERE RowNum > 1
GO

SELECT * FROM dbo.tblProduct
GO

您的副本现在应该消失了:输出是:

ProductID   ProductName   DESCRIPTION        Category
   1          Cinthol         cosmetic soap      soap
   1          Lux             cosmetic soap      soap
   1          Crowning Glory  cosmetic soap      soap
   2          Cinthol         nice soap          soap
   3          Lux             nice soap          soap

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读