首頁 > 資料庫 > mysql教程 > 如何在MySQL DELETE語句中正確使用子查詢?

如何在MySQL DELETE語句中正確使用子查詢?

Patricia Arquette
發布: 2025-01-10 17:56:42
原創
445 人瀏覽過

How to Correctly Use Subqueries in MySQL DELETE Statements?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板