Удаление повторяющихся записей в SQL: примеры и код

Чтобы удалить повторяющиеся записи в SQL, вы можете использовать несколько методов. Вот несколько примеров:

Метод 1. Использование временной таблицы

-- Step 1: Create a temporary table with distinct records
SELECT DISTINCT *
INTO #temp
FROM your_table;
-- Step 2: Delete all records from the original table
DELETE FROM your_table;
-- Step 3: Insert the distinct records back into the original table
INSERT INTO your_table
SELECT *
FROM #temp;
-- Step 4: Drop the temporary table
DROP TABLE #temp;

Метод 2. Использование CTE (общего табличного выражения)

WITH CTE AS (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY column1, column2, ... ORDER BY (SELECT 0)) AS rn
    FROM your_table
)
DELETE FROM CTE
WHERE rn > 1;

Метод 3. Использование предложения EXISTS

DELETE FROM your_table
WHERE EXISTS (
    SELECT 1
    FROM your_table AS t2
    WHERE your_table.column1 = t2.column1
      AND your_table.column2 = t2.column2
      AND your_table.column3 = t2.column3
      ...
      AND your_table.primary_key_column > t2.primary_key_column
);

Метод 4. Использование предложения GROUP BY

DELETE FROM your_table
WHERE primary_key_column NOT IN (
    SELECT MIN(primary_key_column)
    FROM your_table
    GROUP BY column1, column2, ...
);

Обратите внимание, что вам необходимо заменить «ваша_таблица» фактическим именем вашей таблицы, а «столбец1», «столбец2» и т. д. — именами столбцов вашей таблицы, которые вы хотите учитывать при выявлении дубликатов.