Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 忽略重复项,不要删除它们_Sql Server_Tsql_Duplicates - Fatal编程技术网

Sql server 忽略重复项,不要删除它们

Sql server 忽略重复项,不要删除它们,sql-server,tsql,duplicates,Sql Server,Tsql,Duplicates,我已经知道如何删除Id列上的重复行。但我不允许删除服务器上的任何内容。我需要的是一个WITH语句,它忽略重复的行(只取其中一行)。有没有一种方法可以在不修改表中数据的情况下执行此操作 p.S.1所有重复的行都是相同的。因此,没有必要决定保留哪一个 p.S.2我不希望创建额外的临时表(SELECT*INTO…)您可以使用一个CTE,它在所有列上执行SELECTDISTINCT: WITH cte AS ( SELECT DISTINCT Id, col1, col2, ..., colN

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

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


p.S.2我不希望创建额外的临时表(
SELECT*INTO…

您可以使用一个CTE,它在所有列上执行SELECT
DISTINCT

WITH cte AS (
    SELECT DISTINCT Id, col1, col2, ..., colN
    FROM yourTable
)
WITH cte AS (
    SELECT Id, col1, col2, ..., colN
    FROM yourTable
    GROUP BY Id, col1, col2, ..., colN
)
您还可以在所有列上使用
groupby
来实现这一点:

WITH cte AS (
    SELECT DISTINCT Id, col1, col2, ..., colN
    FROM yourTable
)
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
)

请选择表架构?@Arion任何在
Id
列上有重复值的表。我会立即尝试并返回给您。谢谢@Disasterkid
Id
值是唯一的,还是重复的?@TimBiegeleisen整行都是重复的。这意味着也有重复的
Id
s。@Disasterkid然后选择我给你的第一个或第二个选项。谢谢@TimBiegeleisen!暂时无法访问服务器。我一进去就会查。