ホームページ >データベース >mysql チュートリアル >MySQL エラー 1093:「FROM 句で更新のターゲット テーブルを指定できません」を解決する方法
MySQL エラー 1093: 「FROM 句で更新のターゲット テーブルを指定できません」
MySQL エラー 1093 が発生した場合は、次のことが重要です。根本的な問題を理解するために。このエラーは、クエリの FROM 句でも参照されているテーブルを変更しようとすると発生します。
根本原因
MySQL では、テーブルを同時に変更することはできません。 UPDATE または DELETE ステートメントの FROM 句で使用されます。この制限は、両方の操作で同じテーブルにアクセスすることで生じるあいまいさによるものです。
解決策 1: サブクエリの使用
回避策の 1 つは、SELECT を埋め込むことです。 UPDATE または DELETE の FROM 句内のサブクエリとして破損したエントリを識別するステートメントステートメント:
UPDATE story_category SET category_id = NULL WHERE category_id NOT IN ( SELECT DISTINCT category.id FROM category INNER JOIN story_category ON category_id=category.id );
解決策 2: テーブルの自己結合
または、テーブルを自己結合して、同じテーブルに個別のエイリアスを作成することもできます。別名を参照しながら、一方の別名を変更することができます。例:
UPDATE story_category AS updated INNER JOIN story_category AS original ON updated.category_id = original.category_id SET updated.category_id = NULL WHERE original.category_id NOT IN ( SELECT DISTINCT category.id FROM category INNER JOIN story_category ON category_id=category.id );
再発の回避
破損したエントリが削除されたら、今後の無効なエントリを防ぐために story_category テーブルに制約を実装することを検討してください。
ALTER TABLE story_category ADD FOREIGN KEY (category_id) REFERENCES category(id);
以上がMySQL エラー 1093:「FROM 句で更新のターゲット テーブルを指定できません」を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。