删除值

k2fxgqgv  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(195)

我一直在疯狂地尝试从sql server数据库中删除重复的值。一次查询工作,然后它就不工作了。假设这个查询删除了DUP,但在查询时却没有。以下是表格结构:

  1. CREATE TABLE [dbo].[Location](
  2. [ID] [int] NOT NULL,
  3. [FullName] [nvarchar](255) NULL,
  4. [BarCode] [nvarchar](255) NULL,
  5. [Alias] [nvarchar](255) NULL,
  6. [StreetAddress] [nvarchar](255) NULL,
  7. [City] [nvarchar](255) NULL,
  8. [State] [nvarchar](255) NULL,
  9. [ZipCode] [nvarchar](255) NULL,
  10. [ArchiveDate] [datetime] NULL DEFAULT (getdate()),
  11. PRIMARY KEY CLUSTERED
  12. (
  13. [ID] ASC
  14. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  15. ) ON [PRIMARY]

这是我用来删除重复项的查询:

  1. WITH CTE([FullName],
  2. [BarCode],
  3. [Alias],
  4. [StreetAddress],
  5. [City],
  6. [State],
  7. [ZipCode],
  8. -- [ArchiveDate],
  9. DuplicateCount)
  10. AS (SELECT [FullName],
  11. [BarCode],
  12. [Alias],
  13. [StreetAddress],
  14. [City],
  15. [State],
  16. [ZipCode],
  17. -- [ArchiveDate],
  18. ROW_NUMBER() OVER(PARTITION BY [FullName],
  19. [BarCode],
  20. [Alias],`enter code here`
  21. [StreetAddress],
  22. [City],
  23. [State],
  24. [ZipCode]
  25. --[ArchiveDate]
  26. ORDER BY ID) AS DuplicateCount
  27. FROM [TelusArchive].[dbo].[Location])
  28. DELETE FROM CTE
  29. WHERE DuplicateCount > 1;

它不是删除重复项。我做错什么了。。
谢谢你的帮助。。。

lqfhib0f

lqfhib0f1#

你的问题表明,无论你认为什么是重复的都不是。我将从以下问题开始:

  1. SELECT [FullName], [BarCode], [Alias], [StreetAddress], [City], [State], [ZipCode], COUNT(*)
  2. FROM location
  3. GROUP BY [FullName], [BarCode], [Alias], [StreetAddress], [City], [State], [ZipCode]
  4. HAVING COUNT(*) > 1

根据您的问题,这应该不会返回任何行。
如果你真的认为有重复的话,那么问题出在哪里就不清楚了。
我建议一次删除一列,直到你开始得到重复的。然后可以研究列中的值。一个常见的罪魁祸首是看起来相同但不相同的字符串——比如说,由于空格或字符看起来相同但不同。

相关问题