检查SQL Server中的重复数据

l--*_*''' 4 sql sql-server sql-server-2008

请不要问我为什么,但是有很多重复的数据,每个字段都是重复的.

例如

alex, 1
alex, 1
liza, 32
hary, 34
Run Code Online (Sandbox Code Playgroud)

我需要从这个表中删除其中alex, 1一行

我知道这个算法会非常无效,但没关系.我需要删除重复的数据.

做这个的最好方式是什么?请记住,我没有2个字段,我实际上有大约10个字段要检查.

Adr*_*der 6

正如你所说,是的,这将是非常低效的,但你可以尝试类似的东西

DECLARE @TestTable TABLE(
        Name VARCHAR(20),
        SomeVal INT
)
INSERT INTO @TestTable SELECT 'alex', 1
INSERT INTO @TestTable SELECT 'alex', 1
INSERT INTO @TestTable SELECT 'liza', 32
INSERT INTO @TestTable SELECT 'hary', 34

SELECT  *
FROM    @TestTable

;WITH DuplicateVals AS (
    SELECT  *,
            ROW_NUMBER() OVER (PARTITION BY Name, SomeVal ORDER BY (SELECT NULL)) RowID
    FROM    @TestTable
)
DELETE FROM DuplicateVals WHERE RowID > 1

SELECT *
FROM    @TestTable
Run Code Online (Sandbox Code Playgroud)