2010-08-04 5 views
6

я могу использоватьmysql delete on join?

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; 

ответ

5

Отказ от ответственности: У меня нет доступа к базе данных 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

Лично я предпочитаю предложение 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;