Удаление дубликатов email | Практика по SQL
Ғылым және технология
Разбираем задачу с Leetcode по удалению дубликатов записей в таблице. Пример использования подзапросов в команде DELETE. Страница курса - www.asozykin.ru/courses/sql
Поддержать курс можно через сервис Cloudtips - pay.cloudtips.ru/p/45a4055b
Заранее спасибо за помощь!
VK - avsozykin
telegram - t.me/a_sozykin
Мой сайт - www.asozykin.ru
Задача Delete Duplicate Emails - leetcode.com/problems/delete-...
Скрипт для создания локальной таблицы с дубликатами email - www.dropbox.com/s/ylgdrn378s3...
00:00 - Задача удаления дубликатов
01:28 - Создание таблицы для экспериментов в PostgreSQL
02:31 - Разработка подзапроса
03:21 - Разработка команды для удаления дубликатов
04:28 - Запуск команды на Leetcode
05:15 - Учет особенностей MySQL на Leetcode
06:24 - Итоги
Мой канал с краткими и понятными объяснениями сложных тем в ИТ и компьютерных науках - / andreysozykincs
Пікірлер: 51
Вау! Неожиданный ньюанс для MySql!
@AndreySozykin
Ай бұрын
Да, разные СУБД по разному выполняют SQL.
Здравствуйте, Андрей! Спасибо за ваши видео! С вами и море по колено
Спасибо за разбор, ждем еще практических задач!
У Вас дар обучения! Благодарю!
привет, Андрей Сазыкин. Классный голос
Спасибо за старания. Замотивировали порешать задачи на LeetCode.
@AndreySozykin
2 жыл бұрын
Отлично, успехов на LeetCode!
Отличный материал. Спасибо!
@AndreySozykin
2 жыл бұрын
Пожалуйста!
Супер, разобрался, спасибо большое!
Отлично! Спасибо Андрей!
@AndreySozykin
2 жыл бұрын
Пожалуйста!
спасибо большое за пошаговые обьяснения
Большое спасибо, Андрей ... :)
@AndreySozykin
2 жыл бұрын
Пожалуйста!
Спасибо, очень помогли!!!
Здравствуйте! Подскажите , в какой среде разработки вы писали скрипт?
Спасибо за замечательные видео, учусь по ним с удовольствием! У Вас суперская подача! Было б круто если б было больше видосиков по решанию задач в Литкоде
@AndreySozykin
2 жыл бұрын
Спасибо! Про Leetcode еще буду записывать видео.
Спасибо Вам
Добрый день! Спасибо за подробный разбор) Подскажите, если аналогичную задачу пришлось бы выполнять в реальных целях с использованием MySQL всегда используют такую хитрость для данной СУБД?
@AndreySozykin
2 жыл бұрын
К сожалению, в MySQL не очень хорошо разбираюсь, поэтому не могу точно сказать. Возможно, для MySQL есть другой рекомендуемый вариант.
А возможно ли, чтобы не делать второй подзапрос, дать сразу псевдоним для первого? По моему я так делала, хотя могу и ошибаться. Большое спасибо!
Браво!
@AndreySozykin
2 жыл бұрын
Спасибо!
Спасибо
Круто!
@AndreySozykin
2 жыл бұрын
Спасибо!
Спасибо.
@AndreySozykin
2 жыл бұрын
Пожалуйста!
Имхо, довольно сложносоставленный запрос. В обсуждениях на том же leetcode к задаче есть более короткие варианты. Хотя конечно быстрее 91+% решений это интересно.
А если в таблице миллионы записей, то NOT IN ботает очень медленно. Чтобы ускорить нужно делать join и использовать функцию "row_number() over" и проиндексировать email
@AndreySozykin
2 жыл бұрын
Спасибо за комментарий, все правильно. Но, к сожалению, начинающим невозможно рассказать все это за один раз. Поэтому разбиваю на небольшие части с сознательным упрощением. Возможно, имеет смысл сделать отдельный плейлист об оптимизации производительности и рекомендуемых практиках работы с данными в миллионы строк.
литкоуууууд)))))))
@AndreySozykin
28 күн бұрын
да!
а если дубликатов больше одного?
@AndreySozykin
2 жыл бұрын
Удалятся все, кроме email с наименьшим ID.
Select distinct ID, email From Person
@nevil_ras
7 ай бұрын
Не верно решили вы !
Нихуя не понял, но очень интересно
DELETE FROM `oc_product` WHERE `product_id` NOT IN (SELECT * FROM (SELECT MIN(`product_id`) FROM `oc_product` GROUP BY `sku`) AS `oc_product_de`) oc_product - имя вашей таблицы product_id - столбец с уникальным идентификатор (если такого нет, нужно создать а потом удалить) sku - столбец в котором дубли oc_product_de - любое слово "как удалить дубли товаров opencart"