MySQL удалить при присоединении? - PullRequest
6 голосов
/ 04 августа 2010

Я могу использовать

select * from sent_txts s 
LEFT JOIN received_txts r ON s.msg_link_id = r.id 
WHERE r.action_id = 6;

top выбрать подходящие строки,

Как мне написать запрос на удаление совпадающих строк с обеих сторон?

Что-то вроде

delete sent_txts s 
LEFT JOIN received_txts r ON s.msg_link_id = r.id 
WHERE r.action_id = 6;

Ответы [ 2 ]

5 голосов
/ 04 августа 2010

Отказ от ответственности: у меня нет доступа к базе данных mysql для тестирования в данный момент, но я думаю, что вы можете использовать:

delete s, r from send_txts s left join received_txts r on s.msg_link_id = r.id where r.action_id = 6;

См. Документацию mysql delete для получения дополнительной информации. Лучшим методом может быть наложение ограничения внешнего ключа из полученного_текса на отправленное и каскадное удаление.

3 голосов
/ 04 августа 2010

Лично я предпочитаю предложение USING, но предыдущий ответ одинаково действителен.Во-вторых, я предлагаю использовать ограничение внешнего ключа, это гораздо более эффективный способ сделать это.

DELETE FROM s, r USING sent_txts s LEFT JOIN received_txts r ON s.msg_link_id = r.id WHERE r.action_id = 6;
...