Удалить повторяющиеся строки кроме одной

Тема в разделе "Базы данных", создана пользователем dandandan, 2 мар 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Есть таблица id slovo

    Требуется удалить из базы все строки (дубли) в которых slovo=text , оставив при этом только одну строку где slovo=text

    Хочу это все сделать в один mysql запрос. :) Можни ли так изловчиться?
     
  2. IgVan

    IgVan

    Регистр.:
    8 май 2008
    Сообщения:
    212
    Симпатии:
    54
    Может проще сделать выборку из базы убирая дубли и тут же вставить в новую таблицу? Что-то наподобие такой конструкции:
    Код:
    SELECT DISTINCT id, slovo INTO НоваяТаблица [IN БазаДанных] FROM Таблица;
     
  3. LLIbIcpEP

    LLIbIcpEP Создатель

    Регистр.:
    7 май 2008
    Сообщения:
    19
    Симпатии:
    2
    Код:
    delete from table where id = (select id from table where slovo = text limit 1, max(id))
    Если я правильно понял...
     
  4. Budulayj

    Budulayj Постоялец

    Регистр.:
    17 июн 2008
    Сообщения:
    52
    Симпатии:
    8
    Либо можно так:
    DELETE table1 FROM имя_таблицы as table1, имя_таблицы as table2 WHERE table1.slovo=table2.slovo AND table1.id>table2.id
     
    shvonder_85 и dandandan нравится это.
  5. mail_valik

    mail_valik Создатель

    Регистр.:
    25 мар 2010
    Сообщения:
    10
    Симпатии:
    2
    С двумя таблицами помойму что то очень геморно придумано.
    DELETE FROM table_name WHERE table_name.id <> (SELECT TOP 1 FROM table_name WHERE table_name.slovo = :slovo ) AND table_name.slovo = :slovo
     
Статус темы:
Закрыта.