MYSQL之You can't specify target table for update in FROM clause解决办法

You can't specify target table for update in FROM clause含义:不能在同一表中查询的数据作为同一表的更新数据。

例如:

我想查询t_user_asset的余额加上50000作为更新字段f_cashAmount的值,这样写是不行的。

UPDATE t_user_asset SET f_cashAmount = 
	(
     SELECT (ua.f_cashAmount+50000) cashAmount FROM t_user_asset ua WHERE ua.f_userId = 290
  )
WHERE f_userId = 290
修改成以下写法就行,意思就是变个方向,在select外边套一层,让数据库认为你不是查同一表的数据作为同一表的更新数据:

UPDATE t_user_asset SET f_cashAmount = 
(
  SELECT ub.cashAmount FROM
		(
			 SELECT (ua.f_cashAmount+50000) cashAmount FROM t_user_asset ua WHERE ua.f_userId = 290
		) ub
)
WHERE f_userId = 290

以上问题只针对mysql数据库

你可能感兴趣的:(update,1093,specify,Cant)