我试图从php中的1个sql查询中的3个表中删除记录。首先,我尝试从两个表中删除记录。这是对此的查询:
DELETE pa, pr FROM pollanswers pa INNER JOIN pollresults pr ON
pa.PollQuestionId=pr.PollQuestionId WHERE pa.PollQuestionId = '123';
问题是,如果其中一个表中没有PollQuestionId会怎么样?之后的其他事情如何将它与第三个表集成?
感谢。
答案 0 :(得分:3)
您不应该在一个查询中删除多个表。
您可以使用ON DELETE CASCADE
选项在表上定义外键约束。
然后从父表中删除记录将从子表中删除记录。
点击此链接:http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
答案 1 :(得分:0)
我已经弄明白了..感谢您的努力...
这是连接3个表的查询:
DELETE po, pa, pr FROM posts po
LEFT JOIN pollanswers pa ON pa.PollQuestionId=po.PostId
LEFT JOIN pollresults pr ON pr.PollQuestionId=po.PostId
WHERE po.PostId = '123';
答案 2 :(得分:-1)
要加入第三个表,您可以添加另一个内部联接:
DELETE pa, pr FROM pollanswers pa
INNER JOIN pollresults pr ON pa.POllQuestionID=pr.PollQuestionId
INNER JOIN pollwhatevers pw ON pw.whatevercolumn=pa.PollquestionID
WHERE pa.PollQuestionId = '123';
但是如果你想将它加入到一个加入PollResults和PollAnswers的结果的表中,你可能需要考虑使用临时表。请参阅此链接以获取更多信息,我不确定我是否可以解释它: