我一直在疯狂地尝试从sql server数据库中删除重复的值。一次查询工作,然后它就不工作了。假设这个查询删除了DUP,但在查询时却没有。以下是表格结构:
CREATE TABLE [dbo].[Location](
[ID] [int] NOT NULL,
[FullName] [nvarchar](255) NULL,
[BarCode] [nvarchar](255) NULL,
[Alias] [nvarchar](255) NULL,
[StreetAddress] [nvarchar](255) NULL,
[City] [nvarchar](255) NULL,
[State] [nvarchar](255) NULL,
[ZipCode] [nvarchar](255) NULL,
[ArchiveDate] [datetime] NULL DEFAULT (getdate()),
PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
这是我用来删除重复项的查询:
WITH CTE([FullName],
[BarCode],
[Alias],
[StreetAddress],
[City],
[State],
[ZipCode],
-- [ArchiveDate],
DuplicateCount)
AS (SELECT [FullName],
[BarCode],
[Alias],
[StreetAddress],
[City],
[State],
[ZipCode],
-- [ArchiveDate],
ROW_NUMBER() OVER(PARTITION BY [FullName],
[BarCode],
[Alias],`enter code here`
[StreetAddress],
[City],
[State],
[ZipCode]
--[ArchiveDate]
ORDER BY ID) AS DuplicateCount
FROM [TelusArchive].[dbo].[Location])
DELETE FROM CTE
WHERE DuplicateCount > 1;
它不是删除重复项。我做错什么了。。
谢谢你的帮助。。。
1条答案
按热度按时间lqfhib0f1#
你的问题表明,无论你认为什么是重复的都不是。我将从以下问题开始:
根据您的问题,这应该不会返回任何行。
如果你真的认为有重复的话,那么问题出在哪里就不清楚了。
我建议一次删除一列,直到你开始得到重复的。然后可以研究列中的值。一个常见的罪魁祸首是看起来相同但不相同的字符串——比如说,由于空格或字符看起来相同但不同。