Помогите составить запрос ( mysql )

Тема в разделе "Базы данных", создана пользователем tarantas, 4 июл 2009.

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

    tarantas Постоялец

    Регистр.:
    22 мар 2008
    Сообщения:
    75
    Симпатии:
    14
    mysql 4

    Есть 2 таблицы : posts и topics.
    В posts есть поле topic_id , а в topics - tid.

    Нужно удались ряды из posts, в которых в столбце topic_id указан несуществующий topics.tid

    Вроде понятно описал.

    Помогите составить запрос.
    Спасибо.
     
  2. ConstNW

    ConstNW Постоялец

    Регистр.:
    30 июн 2007
    Сообщения:
    132
    Симпатии:
    39
    Код:
    DELETE
    	p
    FROM
    	posts p
    	LEFT JOIN topics t ON(p.topic_id = t.id)
    WHERE
    	t.id IS NULL
    ;
    
     
    tarantas нравится это.
  3. ziavra

    ziavra Постоялец

    Регистр.:
    14 сен 2006
    Сообщения:
    123
    Симпатии:
    55
    Либо
    Код:
    DELETE p 
    from posts p
    where not exists (select 1 from topics t where p.topic_id = t.id)
    Возможно это будет быстрее работать.
     
  4. Сеня Б.

    Сеня Б. Писатель

    Регистр.:
    1 июл 2009
    Сообщения:
    7
    Симпатии:
    0
    Не сочтите занудой, но вам бы лучше Foreign key использовать. В topics сделайте primary key на tid, в posts - foreign key, тогда проблема исчезает сама собой...
     
  5. ConstNW

    ConstNW Постоялец

    Регистр.:
    30 июн 2007
    Сообщения:
    132
    Симпатии:
    39
    не факт, что у ТС InnoDB используется.
     
Статус темы:
Закрыта.