удалить дубликаты sql

Аватар пользователя Ivan Mamtsev
Ivan Mamtsev
23 апреля 2024

Для удаления дубликатов из таблицы в SQL можно воспользоваться оператором DELETE с использованием подзапроса и ключевого слова DISTINCT.

Пример:

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

В данном примере мы удаляем все строки из таблицы, кроме тех, у которых id является минимальным в группе строк с одинаковыми значениями в столбцах column1, column2, и т.д.

Также можно воспользоваться оператором CTE (Common Table Expression), чтобы упростить запрос:

WITH CTE AS (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY column1, column2, ... ORDER BY id) AS rn
    FROM table_name
)
DELETE FROM CTE
WHERE rn != 1;

В данном случае мы используем функцию ROW_NUMBER() чтобы пронумеровать строки в каждой группе, сгруппированной по значениям в столбцах column1, column2, и т.д. Затем удаляем все строки, у которых номер строки не равен 1.

0 0
Познакомьтесь с основами SQL бесплатно