99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2018-10-21 閱讀量: 1364
MySQL嵌套子查詢報錯解決方法

MySQL中,寫SQL語句的時候,遇到Y(jié)ou can't specify target table '表名' for update in FROM clause這樣的錯誤,它的意思是說,不能先select出同一表中的某些值,再update這個表(在同一語句中),即不能依據(jù)某字段值做判斷再來更新某字段的值。


實例如下語句:
update t_user set password =(select t.password from t_user t where t.username = 'admin') where uid = '1'
語義是沒有問題的,將id為1的密碼設(shè)置為和admin相同的密碼,運行時報錯如下:
update t_user set password = (select t.password from t_user t where t.username = 'admin') where uid = '1'
Error Code: 1093. You can't specify target table 't_user' for update in FROM clause 0.000 sec

主要原因是MySQL不支持這種查詢修改的方式,針對此類問題有個簡單的解決辦法,繞一下將查詢結(jié)果放到臨時表中進(jìn)行取值和更新,本例修改后語句如下:
update t_user set password = (select a.password from
(select t.password from t_user t where t.username = 'admin') a)
where uid = '1';

運行成功,其實就是將SELECT出的結(jié)果再通過中間表SELECT一遍,這樣就避免了錯誤。

0.0000
0
關(guān)注作者
收藏
評論(0)

發(fā)表評論

暫無數(shù)據(jù)
推薦帖子