Ласкаво просимо назад до серії з 30 інтерв'ю з SQL! У цьому пості ми поглибимося в одну з найпоширеніших задач при роботі з базами даних: видалення дублікатів. Це критична навичка для будь-якого SQL-розробника, оскільки дублікати можуть призвести до помилок, неефективних запитів і неточних результатів.
Якщо вам потрібно видалити дублікати, зберігши певний рядок, ви можете скористатися оператором GROUP BY
. Цей метод дозволяє згрупувати записи за однією або кількома колонками та зберегти один рядок з кожної групи.
Приклад: Видалення дублікатів з збереженням рядка з мінімальним id
Припустимо, у вас є наведеній набір даних, і ви хочете видалити дублікати за колонками name
, age
та city
, але хочете зберегти рядок з мінімальним значенням id
.
MIN(id)
гарантує, що буде збережений лише рядок з найменшим значеннямid
для кожної групи.- Оператор
GROUP BY name, age, city
групує рядки за унікальною комбінацієюname
,age
таcity
. - Оператор
DELETE
видаляє рядки, деid
не є мінімальним для цієї групи.
Результат:
Після виконання запиту в таблиці залишаються лише унікальні рядки.
Перекладено з: Day 4/30: How to Remove Duplicates from a Table in SQL