mysql删除加入?

时间:2010-08-04 03:37:28

标签: mysql join sql-delete

我可以用

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;

2 个答案:

答案 0 :(得分: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文档。一个更好的方法可能是将来自received_txts的外键约束放入发送,并级联删除。

答案 1 :(得分: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;