繁体   English   中英

使用内部联接从多个表中删除

[英]delete from multiple table with inner join

我试图从PHP中的1个SQL查询中的3个表中删除记录。 首先,我尝试从两个表中删除记录。 这是对此的查询:

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

问题是,如果其中一个表中没有PollQuestionId,那么如何将其与第三个表集成?

谢谢。

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

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

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

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

我已经把它想出来了..谢谢你的努力......

这是连接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';

要加入第三个表,您可以添加另一个内部联接:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM