忽略重复项而不删除它们

时间:2016-12-06 08:54:00

标签: sql-server tsql duplicates

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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
)