0

我正在尝试从 php 中的 1 个 sql 查询中的 3 个表中删除记录。首先,我尝试从两个表中删除记录。这是查询:

DELETE pa, pr FROM pollanswers pa INNER JOIN pollresults pr ON
pa.PollQuestionId=pr.PollQuestionId WHERE pa.PollQuestionId = '123';

问题是,如果其中一个表中没有 PollQuestionId 怎么办.. 之后如何将它与第三个表集成?

谢谢。

4

3 回答 3

3

您不应该在一个查询中从多个表中删除。

ON DELETE CASCADE您可以使用选项 在表上定义外键约束。

然后从父表中删除记录会从子表中删除记录。

检查此链接:http ://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

于 2013-10-29T15:13:16.983 回答
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';
于 2013-10-29T15:27:09.750 回答
-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 的表,您可能需要考虑使用临时表。有关更多信息,请参阅此链接,我不确定我是否能像这样解释它:

http://devzone.advantagedatabase.com/dz/webhelp/Advantage7.1/adssql/using_temporary_tables_in_sql_statements.htm

于 2013-10-29T15:21:34.157 回答