ホームページ > データベース > mysql チュートリアル > MySQL エラー 1093:「FROM 句で更新のターゲット テーブルを指定できません」を修正するにはどうすればよいですか?

MySQL エラー 1093:「FROM 句で更新のターゲット テーブルを指定できません」を修正するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-23 16:11:11
オリジナル
891 人が閲覧しました

How Can I Fix MySQL Error 1093:

MySQL エラー 1093 の克服: FROM 句で指定されたテーブルの更新

でも使用されているテーブルを更新しようとすると、MySQL エラー 1093 が発生します。同じクエリの FROM 句。このエラーを解決するには、次の方法を検討してください。

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

可能であれば、適切な選択基準を使用してテーブルをそれ自体に結合します。これにより、MySQL はテーブルを別個のエンティティとして表示できるようになり、破壊的な変更が可能になります。

UPDATE tbl AS a
INNER JOIN tbl AS b ON ....
SET a.col = b.col
ログイン後にコピー

FROM 句でサブクエリをより深くネストする

代わりに、ネストします。 FROM 句のさらに奥深くにあるサブクエリで、暗黙的な一時クエリを作成します。 table:

UPDATE tbl SET col = (
  SELECT ... FROM (SELECT.... FROM) AS x);
ログイン後にコピー

ただし、この方法は効率が低く、特定のバージョンでは MySQL のクエリ オプティマイザーによって適切に最適化されない可能性があります。

クエリ オプティマイザーの無効化

MySQL バージョン 5.7.6 以降では、オプティマイザーがサブクエリ戦略を妨げる可能性があります。最適化を一時的に無効にするには、optimizer_switch 変数を設定します。

SET optimizer_switch = 'derived_merge=off';
ログイン後にコピー

削除クエリの例

質問で指定された特定のクエリに対処するには、story_category テーブルを破損したエントリを特定して削除するためのカテゴリ テーブル:

DELETE t1
FROM story_category AS t1
INNER JOIN category AS t2
ON t1.category_id = t2.id
WHERE t2.id IS NULL;
ログイン後にコピー

結論として、これらの手法を使用すると、「FROM 句で更新のターゲット テーブルを指定できません」エラーを克服し、データベース テーブルに必要な変更を実行できます。

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

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