EasyWeb.org.ua
  • Главная
    • shop-script
    • акции
    • php
    • javascript
    • joomla
    • wordpress
    • docs
    • internet
    • объявления
    • other
  • Вопрос ответ
  • Портфолио
  • Модули
  • Обратная связь
  • О блоге
    • Каталог сайтов
    • Карта сайта
Главная » other » Удаление дубликатов в MySQL
мая15 2

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

Опубликовано в other

Украл статью отсюда http://mojbred.com/706.html

Для меня штука полезная очень. Пользуюсь последним методом

Оказывается, удалить дубликаты в 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» — не работало. Учтите.

Метки: mysql

« Предыдущая запись

мы в песочнице хабра

Следующая запись»

ошибка в Google Analytics



Просмотров: 840

Похожие записи:

    2 Коммент.

    1. Александр | 21 февраля 2011 at 18:40

      Все работает до тех пор, пока количество записей в таблице не велико. Как только превышает 2к, сервер начинает задумыватся. Так же ограничением этого способа является невозможность составить дополнительное условие. Так что это не метод вовсе.

      Ответить
      • Артем | 21 февраля 2011 at 18:49

        Для тех, у кого нет дополнительных условий и записей меньше 2к очень даже метод.
        Использую очень редко. Не для регулярных «очисток»

        Ответить

    Оставить комментарий Отменить ответ

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    *

    *

    Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

    • Twitter
    • Facebook
    • VK
    • RSS


    | |

    Последние комментарии

    • Артем к записи Фильтр по ценам
    • Виктор к записи Фильтры в Webasyst Shop-Script
    • Виктор к записи Фильтр по ценам
    • Артем к записи дерево категорий по-своему (shop-script)
    • Максим к записи дерево категорий по-своему (shop-script)

    Самые комментируемые

    • Автоматическое заполнение рекомендуемых товаров (145)
    • дерево категорий по-своему (shop-script) (135)
    • Фильтры в Webasyst Shop-Script (62)
    • WP Cumulus для Shop-Script исправленный (58)
    • Оплата через LiqPay для Shop-Script (51)
    • WP Cumulus для Joomla и Shop-Script (50)
    • Две цены в WA Shop-Script (49)

    Самые читаемые

    • Фильтры в Webasyst Shop-Script - 13 101 просмотров
    • дерево категорий по-своему (shop-script) - 12 217 просмотров
    • ввод даты, календарь javascript - 9 738 просмотров
    • Автоматическое заполнение рекомендуемых товаров - 8 224 просмотров
    • Бренды в Webasyst Shop-Script - 8 064 просмотров
    • Модули - 8 019 просмотров
    • Слайдер в списках продуктов - 6 223 просмотров

    Архивы







    Поддерживать ежемесячно с помощью Donutor

    Свежие записи

    • Руководство пользователя Joomla 2.5
    • Вкладки на странице продукта
    • Весенние скидки от WebAsyst
    • Обновление Shop-Script
    • Фильтр по ценам

    друзья

    • at-home
    • Fisher — сотовые телефоны
    • WebAsyst
    • Zdorovy.in.ua

    Счетчики

    www.megastock.ruЯндекс.Метрика

    Мета

    • Войти
    • RSS записей
    • RSS комментариев
    • WordPress.org

    © 2008-2012 EasyWeb.org.ua | Дизайн elegantthemes.com | Разработано на CMS WordPress