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