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