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

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

Barbara Streisand
リリース: 2024-12-17 06:12:24
オリジナル
367 人が閲覧しました

How to Resolve MySQL Error 1093:

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート