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个字段要检查.
正如你所说,是的,这将是非常低效的,但你可以尝试类似的东西
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)