MySQL DELETE語句中的子查詢條件
使用子查詢作為條件從表中刪除行時,可能會遇到語法錯誤。要解決此問題,需要考慮在DELETE操作中使用子查詢的限制。
在MySQL中,不能直接在DELETE語句的WHERE子句中使用子查詢。但是,有一個巧妙的方法可以解決這個限制。透過使用額外的子查詢來包含原始子查詢,可以成功執行刪除操作。
例如,以下查詢:
<code class="language-sql">DELETE FROM term_hierarchy AS th WHERE th.parent = 1015 AND th.tid IN ( SELECT DISTINCT(th1.tid) FROM term_hierarchy AS th1 INNER JOIN term_hierarchy AS th2 ON (th1.tid = th2.tid AND th2.parent != 1015) WHERE th1.parent = 1015 );</code>
會產生文法錯誤。但是,透過將子查詢包裝在另一個子查詢中,如下所示:
<code class="language-sql">DELETE e.* FROM tableE e WHERE id IN (SELECT id FROM (SELECT id FROM tableE WHERE arg = 1 AND foo = 'bar') x);</code>
可以成功執行刪除操作。請記住,封閉的子查詢應該被命名,如範例中「x」別名所示。
以上是如何在MySQL DELETE語句中正確使用子查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!