簡體   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