sql - SQL Server 重复项 - 删除值
问题描述
我一直在疯狂尝试从我的 SQL Server 数据库中删除重复值。一次查询有效,然后就无效了。据说这个查询删除了重复,但查询时没有。这是表结构:
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;
它不会删除重复项。我究竟做错了什么..
谢谢您的帮助...
解决方案
您的问题表明,您可能认为重复的任何内容都不是。我将从查询开始:
SELECT [FullName], [BarCode], [Alias], [StreetAddress], [City], [State], [ZipCode], COUNT(*)
FROM location
GROUP BY [FullName], [BarCode], [Alias], [StreetAddress], [City], [State], [ZipCode]
HAVING COUNT(*) > 1
根据您的问题,这应该不返回任何行。
然后,不清楚问题出在哪里——如果你真的认为有重复。
我建议一次删除一列,直到您开始重复。然后您可以调查列中的值。一个常见的罪魁祸首是看起来相同但不同的字符串——比如由于空格或字符看起来相同但不同。
推荐阅读
- c# - C# 中 OnnxRuntime 张量的高效位图
- python - “Python 已停止工作” - 当我尝试将记录从数据库显示到 QListWidget
- tensorflow - 通用句子编码器嵌入运行时错误:分配器 CPU 耗尽资源
- javascript - 从 JavaScript 中的每个其他数组中找到包含至少一个元素的最小子数组的最简单方法是什么?
- react-native - react-native-code-push 如何判断更新?
- python - 如何从 Python 处理中的主文件导入变量?
- javascript - 忽略空对象
- android - 从片段检索时静态变量为空,在另一个片段上工作?
- node.js - 从 CMD 向 Node.Js 服务器发送数据
- wordpress - wordpress 网站为用户端和管理员端显示了两个不同的界面