巧妙解決MySQL子查詢刪除行時的語法錯誤
在MySQL中使用子查詢作為刪除行的條件時,可能會出現語法錯誤。這種錯誤通常發生在刪除操作的目標表(此處為term_hierarchy
)也在子查詢中被引用時。
為了解決這個問題,需要採用一種替代方法。以下查詢提供了一個有效的解決方法:
<code class="language-sql">DELETE th.* FROM term_hierarchy AS th WHERE th.parent = 1015 AND th.tid IN ( SELECT DISTINCT(th1.tid) FROM (SELECT tid FROM term_hierarchy WHERE parent = 1015) AS th1 INNER JOIN term_hierarchy AS th2 ON (th1.tid = th2.tid) WHERE th2.parent != 1015 );</code>
在這個查詢中,用來識別要刪除的tid
值的子查詢被包裹在一個額外的子查詢中(此處命名為th1
)。這使得MySQL能夠避免在DELETE
和WHERE IN
子句中同時使用term_hierarchy
表,從而解決了語法錯誤。
以上是如何使用子查詢刪除 MySQL 中的行而不出現語法錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!