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