ホームページ >データベース >mysql チュートリアル >MySQL エラー 1093 を解決する方法: FROM 句でターゲット テーブルを指定できませんか?

MySQL エラー 1093 を解決する方法: FROM 句でターゲット テーブルを指定できませんか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-22 07:29:09634ブラウズ

How to Solve MySQL Error 1093: Can't Specify Target Table in FROM Clause?

MySQL エラー 1093: FROM 句でターゲット テーブルを指定できません

で参照されているテーブルに対して更新クエリを実行しようとしたときFROM 句を使用すると、MySQL エラー 1093 が発生する可能性があります。これは、MySQL が選択に直接関係するテーブルの変更を禁止しているためです。 process.

もう 1 つの方法は、テーブルをそれ自体に結合するです。テーブルのエイリアスを作成すると、そこから複数回選択して、エラーを発生させずに元のテーブルを変更できます。

UPDATE tbl AS a
INNER JOIN tbl AS b ON a.id = b.id
SET a.col = b.col

別の解決策は、サブクエリを FROM 句のさらに深くネストすることです:

UPDATE tbl SET col = (
  SELECT ... FROM (SELECT.... FROM) AS x);

この回避策は、サブクエリから暗黙的な一時テーブルを作成し、エラーなしで更新できるようにします。ただし、この方法はパフォーマンスに影響を与える可能性があります。

MySQL 5.7.6 以降では、オプティマイザーがサブクエリを最適化し、同じエラーが発生する可能性があることに注意することが重要です。この問題が発生した場合は、最適化を一時的に無効にすることを検討してください:

SET optimizer_switch = 'derived_merge=off';

以上がMySQL エラー 1093 を解決する方法: FROM 句でターゲット テーブルを指定できませんか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。