我可以用
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;
答案 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;