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

MySQL エラー 1093:「FROM 句で更新のターゲット テーブル 'table_name' を指定できません」を解決する方法?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-24 15:12:15629ブラウズ

How to Solve MySQL Error 1093:

MySQL エラー 1093: 制限の理解と克服

MySQL で、次の FROM 句でも参照されているテーブルを変更しようとします。同じクエリでは、「FROM で更新するターゲット テーブル 'table_name' を指定できません」というエラーが発生する可能性があります。条項。」この制限は、MySQL がそのような操作を直接実行できないために発生します。

この問題を解決するには、次のようないくつかのアプローチが考えられます。

テーブルをそれ自体に結合する

1 つのオプションは、適切な選択基準を使用してテーブルをそれ自体に結合し、MySQL の観点からテーブルの 2 つの異なるインスタンスを作成することです。これにより、一方のインスタンスでは破壊的な操作を実行し、もう一方のインスタンスはそのままにすることができます。

FROM 句でのサブクエリのネスト

別の回避策として、ターゲットを生成するサブクエリをネストする方法があります。より深い FROM 句内で削除する行。これにより、サブクエリから暗黙的な一時テーブルが作成され、MySQL はターゲット テーブルとは別のエンティティとして認識します。ただし、このアプローチはパフォーマンスに影響を与える可能性があります。

オプティマイザーの最適化の無効化 (MySQL 5.7.6 以降)

MySQL 5.7.6 以降、オプティマイザーは最適化を行う可能性があります。 FROM 句にサブクエリが含まれているため、エラーが継続します。これを解決するには、optimizer_switch 変数を使用して最適化を無効にします。

SET optimizer_switch = 'derived_merge=off';

全体的なクエリのパフォーマンスに悪影響を与える可能性があるため、これは短期的な解決策または小規模な 1 回限りのタスクとして推奨されることに注意してください。

結論

エラー「対象テーブルを指定できません」 「'table_name' for update in FROM 句」は、FROM 句でも使用されるテーブルの変更における MySQL の制限に起因します。上記で概説した方法を採用することで、開発者はこの制限を克服し、データに対して必要な操作を実行できます。

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

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