Удаление дубликатов в MySQL

Всяческий Бред - Идти на Главную Страницу >>>
November 26, 2007

Оказывается, удалить дубликаты в SQL можно запросом с простым JOIN таблиц самой на себя:

DELETE t1 FROM sys_users t1, sys_users t2 WHERE t1.login=t2.login AND t1.ID > t2.ID


Этот запрос, если его соответствующим образом модифицировать, вполне будет работать и в MySQL, что меня, кстати, весьма удивило, ибо я ни разу не видел такого решения для удаления дубликатов, хотя нужда в этом действительно возникает достаточно часто. Обычно либо используют несколько запросов, создавая временные таблицы, либо тупо делают новую таблицу с помощью SELECT DISTINCT, потом переименовывают, удаляя старую, либо насильно навешивают уникальный ключ ALTER IGNORE TABLE table_name ADD UNIQUE INDEX (field_name) (при этом дубликаты удаляются автоматически).


На место ID нужно поставить любой уникальный ключ, который всегда есть в таблице. При этом не обязательно, чтобы ключ был автоинкрементный или вообще числовой, он вполне может быть и текстовым, сравнение ">" все равно будет работать. В общем виде запрос выглядит так:

DELETE table_name FROM table_name as table1,table_name as table2 WHERE table1.field_name=table2.field_name AND table1.unique_key>table2.unique_key


Я, правда, не уверен, что это будет работать во всех версиях MySQL, но у меня в 4й работает.

UPD: Тут реально удалял чуть более сложным запросом, понадобилось написать так:

DELETE table1 FROM zzz as table1,zzz as table2 WHERE table1.x=table2.x AND table1.y=table2.y AND table1.unique_id>table2.unique_id

Где zzz - имя таблицы, x и y - поля, которые мне надо было чтобы были парно уникальны. Основная разница с запросом, приведенным первым, в том, что пока не поставил "DELETE table1" вместо "DELETE zzz" - не работало. Учтите.



Тэги: Nov2007 Полезные сведенья

Темы, имеющие некоторое отношение к этой (рускоязычный поиск в mysql все же очень не совершенен):
Кстати, о кодировках mysql November 7, 2008
Удаленные клиенты для работы с MySQL November 7, 2008
Покажут ли СУП-у где раки зимуют? March 20, 2008
99 признаков женщин, знакомиться с которыми не стоит May 25, 2006
RegExp для удаления множественных бэкслешей в php December 5, 2007

Комментировать:
пользователь: пароль:
регистрироваться  Залогинится под OpenID


Архив:

Nov2008   Oct2008   Sep2008   Aug2008   Jul2008   Jun2008   May2008   Apr2008   Mar2008   Feb2008   Jan2008   Dec2007   Nov2007   Oct2007   Sep2007   Aug2007   Jul2007   Jun2007   May2007   Apr2007   Mar2007   Feb2007   Jan2007   Dec2006   Nov2006   Oct2006   Sep2006   Aug2006   Jul2006   Jun2006   May2006   

Категории:

Полезные Сведенья
Кухонная Философия
Общество и его пороки
Новости
Еда и Питье
Техника
Разное
Личное
Природа
Фото/Видео
"Веселые" Картинки
Юмор


Пишите Письма


Наиболее посещаемое:
  • А вы уже видели Беовульф с сиськами Анджелины Джоли?
  • Как сделать пизду в домашних условиях
  • 100 слов и 400 фраз, которые ты можешь сказать любимой
  • Как приготовить суши в домашних условиях
  • Сисадмин осужден за распространение поpно
  • Удаление Windows Vista на ноутбуке
  • База данных по жителям Украины
  • Как американцы видят русских
  • За рулем пизда - это не езда
  • Правильные имена для мальчиков и девочек
  • Любопытные факты об интимной жизни
  • Подборка наиболее шизовых поисковых запросов
  • Мифы и правда о МакДональдсе, Часть 1.
  • Три принципа БДСМ
  • Группы крови детей и родителей
  • Ссылки:

    Лулзятня с картинками
    Православный Газенваген™
    Форум Русского Эквадора
    Бесплатный Хостинг Картинок
    Бесплатный Сервис Голосований
    Мой Бред в LJ
    Последние поисковые запросы >>>


    Eще Ссылки:

    покупка жд билеты
    Недорогая цветная тонировка дешево





    Free Web Stats