Как удалить строки в таблице, в которых совпадают 2 поля?

Тема в разделе "Базы данных", создана пользователем verfaa, 7 сен 2013.

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

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    375
    Симпатии:
    41
    Есть таблица с городами такого вот вида
    [​IMG]
    Проблема в том что в ней присутствуют города, названия которых повторяются. В нашем примере это Conant
    Подскажите, каким образом можно почистить на дубли городов эту таблицу?
    И запрос необходимо построить по следующей логике - если совпадает название города (name) и id региона(id_region), то удаляем дублирующую строку.
     
  2. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    Оставит в базе строку с меньшим ID-шником:
    Код:
    DELETE t1 FROM tablename t1 INNER JOIN tablename t2
    ON t1.id_region = t2.id_region AND t1.name = t2.name AND t2.id < t1.id
    Бэкап только сделай, вдруг "промазал"
     
    verfaa нравится это.
  3. ArtyGrand

    ArtyGrand Постоялец

    Регистр.:
    6 июн 2009
    Сообщения:
    80
    Симпатии:
    37
    А на будущее переделай таблицу, добавь
    Код:
    UNIQUE KEY (id_counrtry,name)
    что бы повторы не создавались
     
  4. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    Задумка правильная, но совет из разряда вредных, т.к. оторван от контекста.
    Добавит ТС индекс, а ему скрипт ошибки валить начнёт.. Кто виноват? Советчик!
     
    verfaa нравится это.
Статус темы:
Закрыта.