- CTE ( ). , ; , , , - , , - - .
:
WITH numbered AS (
SELECT ROW_NUMBER() OVER(PARTITION BY [dupe-column-list] ORDER BY [dupe-column-list]) AS _dupe_num FROM [table-name] WHERE 1=1
)
DELETE FROM numbered WHERE _dupe_num > 1;
"dupe-column-list" - , , . ORDER BY - , , , "" . ( " 1 = 1" - .)
, , , Sql Server , CTE. , DELETE, , , , CTE. ( , "DELETE" "SELECT *", , , , .)
:
CREATE TABLE
INSERT INTO
VALUES (1, 1, 'one,one')
, (2, 2, 'two,two')
, (3, 3, 'three,three')
, (1, 1, 'one,one')
, (1, 2, 'one,two')
, (3, 3, 'three,three')
, (1, 1, 'one,one')
, (1, 2, '1,2');
8 5 ; 3 . :
SELECT col1
, col2
, col3
, COUNT(1) AS _total
FROM
WHERE 1=1
GROUP BY col1, col2, col3
HAVING COUNT(1) > 1
ORDER BY _total DESC;
, , 1 .
WITH numbered AS (
SELECT ROW_NUMBER() OVER(PARTITION BY col1, col2, col3 ORDER BY col1, col2, col3) AS _dupe_num FROM
)
DELETE FROM numbered WHERE _dupe_num > 1;
5 , .