あなたは、FROM句に更新のターゲット表「table_A」を指定することはできません

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/weixin_39207535/article/details/88547757

デルMySQLとサブクエリを持つ更新は、この間違ったことを報告された場合

- > MYSQLで、記録は最初のテーブルを選択することはできませんので、これらの条件の下で更新すると、同じテーブル内のレコードを削除します

ソリューションは、あなたがエラーを回避するように、テーブルの真ん中で再びそれを選択し、次に得られた結果を選択し、そして、

この問題は、MySQLだけで発生し、MSSQLとOracleの問題は発生しません。

詳細については、SQLを参照してください。

元のエラーSQL:

UPDATE table_A SET status=1 
WHERE A_id IN(
  SELECT order_id FROM table_A_B WHERE B_id=23
)

SQLを変更した後:

UPDATE table_A SET status=1
WHERE A_id IN(
SELECT a.id FROM (
 SELECT id FROM table_A_B WHERE B_id=23
) a)

内部サブサイクルの等価物は、別名を演じ

おすすめ

転載: blog.csdn.net/weixin_39207535/article/details/88547757