mysql удалить при присоединении?

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

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

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

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

Что-то типа

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

person Hailwood    schedule 04.08.2010    source источник


Ответы (2)


Отказ от ответственности: в данный момент у меня нет доступа к базе данных 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. Лучшим методом может быть установка ограничения внешнего ключа из Received_txts в Send и каскадное удаление.

person Brandon Horsley    schedule 04.08.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;
person Ryan Tenney    schedule 04.08.2010