Написано: 26.03.2023

196. Удаление дублей email (Delete Duplicate Emails)

easy

SQL schema

Table: person

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| email       | varchar |
+-------------+---------+
id is the primary key column for this table.
Each row of this table contains an email. The emails will not contain uppercase letters.

Задание.

Напишите SQL-запрос, чтобы удалить все повторяющиеся электронные адреса, сохранив только одно уникальное электронный адрес с наименьшим идентификатором. Обратите внимание, что вы должны написать инструкцию DELETE, а не SELECT.

После запуска вашего скрипта показанный ответ – это таблица Person. Драйвер сначала скомпилирует и запустит ваш фрагмент кода, а затем покажет таблицу Person. Окончательный порядок в таблице персон не имеет значения.

Формат результата запроса приведен в следующем примере.

Пример 1.

Входные данные:

Person table:
+----+------------------+
| id | email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
| 3  | john@example.com |
+----+------------------+

Результат:

+----+------------------+
| id | email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
+----+------------------+

Пояснение: john@example.com is repeated two times. We keep the row with the smallest Id = 1.

Решение.

/*
 Please write a DELETE statement and DO NOT write a SELECT statement.
 Write your PL/SQL query statement below
 */
 DELETE FROM person WHERE id NOT IN (SELECT id FROM (SELECT MIN(id) AS id, email FROM person GROUP BY email))