ホームページ > データベース > mysql チュートリアル > MySQL DELETE ステートメントでサブクエリを正しく使用するにはどうすればよいですか?

MySQL DELETE ステートメントでサブクエリを正しく使用するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-10 17:56:42
オリジナル
499 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート