удалить дубликаты sql
Ответы
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