【问题标题】:Ignore duplicates and not deleting them忽略重复而不删除它们
【发布时间】:2016-12-06 16:59:46
【问题描述】:

我已经知道如何删除 Id 列上的重复行。但我不允许删除服务器上的任何内容。我需要的是一个WITH 忽略重复行的语句(只取其中一个)。有没有办法在不修改表中数据的情况下做到这一点?

P.S.1 所有重复的行都是相同的。所以没有必要决定保留哪一个。

P.S.2 我不想创建额外的临时表 (SELECT * INTO ...)

【问题讨论】:

  • 表格架构好吗?
  • @Arion 任何在Id 列上具有重复值的表。

标签: sql-server tsql duplicates


【解决方案1】:

您可以使用在所有列上执行选择 DISTINCT 的 CTE:

WITH cte AS (
    SELECT DISTINCT Id, col1, col2, ..., colN
    FROM yourTable
)

您也可以在所有列上使用GROUP BY 来实现此目的:

WITH cte AS (
    SELECT Id, col1, col2, ..., colN
    FROM yourTable
    GROUP BY Id, col1, col2, ..., colN
)

如果Id 的值重复,但所有其他列都是重复的,那么您可以尝试:

WITH cte AS (
    SELECT MIN(Id) AS Id, col1, col2, ..., colN
    FROM yourTable
    GROUP BY col1, col2, ..., colN
)

【讨论】:

  • 我会立即尝试并回复您。谢谢!
  • @Disasterkid Id 值是唯一的还是重复的?
  • @TimBiegeleisen 整行都是重复的。这意味着也有重复的Ids。
  • @Disasterkid 然后选择我给你的第一个或第二个选项。
  • 谢谢@TimBiegeleisen!暂时无法访问服务器。我一进去就会检查。
猜你喜欢
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
  • 1970-01-01
  • 2018-05-31
  • 1970-01-01
相关资源
最近更新 更多