За последние 24 часа нас посетили 17996 программистов и 1648 роботов. Сейчас ищут 1844 программиста ...

Удвление записей, которые повторяются

Тема в разделе "MySQL", создана пользователем joost, 25 окт 2007.

  1. joost

    joost Guest

    Есть таблица

    в ней записи


    Маша
    Владимир
    Маша
    Ольга
    Люда
    Коля
    Владимир
    Ольга


    Надо удалить те которые повторяются, оставив только один раз

    Результат должен быть
    Маша
    Владимир
    Ольга
    Люда
    Коля
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    для начала навести порядок в своей голове и понять, какие именно записи оставлять.
     
  3. joost

    joost Guest

    armadillo, если не знаете, то не пишите ничего!
     
  4. host

    host Активный пользователь

    С нами с:
    20 июн 2007
    Сообщения:
    733
    Симпатии:
    3
    DISTINCT или GROUP BY
     
  5. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    а если
    [sql]DELETE FROM ttttttable WHERE name='Николай Николаич' LIMIT 1, n[/sql]
    n - колво записей соответствующих запросу минус одын
     
  6. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    joost
    1. Экспорт таблицы в текстовый файл (только данные, без структуры таблицы).
    2. В текстовом файле search&replace: все INSERT меняем на INSERT IGNORE.
    3. Удаление всех записей из таблицы.
    4. Добавление UNIQUE-индекса на поле name.
    5. Импорт таблицы из текстового файла ;)
     
  7. joost

    joost Guest

    а можно как-то
    DELETE FROM ttttttable WHERE [повторяется в таблице больше одного раза] LIMIT 1, [количество повторений name]-1
     
  8. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Выбери с DISTINCT все записи. Очисти табличку и вставь полученные ранее записи.
     
  9. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    joost
    Насколько мне известно, нет. По стандартам SQL нельзя удалять записи из той же таблицы, из которой происходит выборка. А без выборки простое условие не придумать, разве что использовать временную таблицу или дополнительное поле.
     
  10. joost

    joost Guest

    надо запросом!
     
  11. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    joost
    Хотеть не вредно ;)
     
  12. joost

    joost Guest

    наверное, это будет правильно! спасибо!
     
  13. joost

    joost Guest

    А что если так?
    Код (Text):
    1.  
    2. delete from table where name in (select name from table group by name having count(*)>1 )
     
  14. tmanager

    tmanager Активный пользователь

    С нами с:
    12 мар 2008
    Сообщения:
    108
    Симпатии:
    0
    На самом деле задача решается достаточно просто.

    [sql]delete from ИмяТаблицы
    using ИмяТаблицы,ИмяТаблицы as Псевдоним
    where ИмяТаблицы.ИмяПоляСповторами=Псевдоним.ИмяПоляСповторами
    and ИмяТаблицы.КлючевоеПоле<>Псевдоним.КлючевоеПоле;[/sql]