獲取唯一的或是刪除重復(fù)的記錄
標(biāo)簽:
SQL Server
在某一数据表中,数据有冗余了,我们需要获取唯一的记录。
同这样的问题,使用例子来说时,最简单了。
创建一张数据表:
CREATE TABLE dbo.Data( [ID] int IDENTITY(1,1) NOT NULL, [Item] varchar(55) NULL, [Designation] varchar(20) NULL, [Qty] decimal(10, 2) NULL ) GO
Source Code
为这张表,添加一些数据,注意一些数据已经重复了:
INSERT INTO [dbo].[Data] ([Item],[Designation],[Qty]) VALUES (N'A001',N'DES',1), (N'A001',N'DES',1), (N'A003',N'TSG',12), (N'A015',N'MTT',6), (N'A360',N'OSS',7), (N'A360',N'OSS',7), (N'A360',N'OSS',7), (N'A521',N'FPP',4), (N'A015',N'MTT',6), (N'A741',N'BBS',9), (N'A741',N'BBS',9), (N'A003',N'TSG',12), (N'A015',N'MTT',6) GO
Source Code
如果数据是较高的一些版本,接下来使用ROW_NUMBER()来过滤数据:
WITH TempData ([Item],[Designation],[Qty],[DuplicateCount])AS( SELECT [Item],[Designation],[Qty],ROW_NUMBER() OVER(PARTITION by [Item],[Designation],[Qty] ORDER BY [Item],[Designation],[Qty]) AS [DuplicateCount] FROM [dbo].[Data])SELECT * FROM TempData
Source Code
上面只是知道哪些数据是在重复的。现在我们需要对上面的SQL语句稍改一下,把重复的记录删除:
WITH TempData ([Item],[Designation],[Qty],[DuplicateCount])AS( SELECT [Item],[Designation],[Qty],ROW_NUMBER() OVER(PARTITION by [Item],[Designation],[Qty] ORDER BY [Item],[Designation],[Qty]) AS [DuplicateCount] FROM [dbo].[Data])--SELECT * FROM TempDataDELETE FROM TempData WHERE [DuplicateCount] > 1 GOSELECT [Item],[Designation],[Qty] FROM [dbo].[Data]GO
Source Code
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦