我已经知道如何删除Id
列上的重复行。但我不允许删除服务器上的任何内容。我需要的是一个忽略重复行的WITH
语句(只接受其中一行)。有没有办法在不修改表中的数据的情况下执行此操作?
P.S.1所有重复行都是相同的。所以没有必要决定保留哪一个。
P.S.2我宁愿不创建额外的临时表(SELECT * INTO ...
)
答案 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
)