1.用b表的結果為a表賦值
update student set hobby= (select hobby_name from hobby )
錯誤,提示“Subquery return more than one row"
update student set hobby= (select hobby_name from hobby limit 1)
執行ok
說明:查詢結果應該是一個唯一字段才能給前面的a表字段賦值。
2.用一個表的查詢結果給字段賦值
update student set hobby= (select hobby from student where studentid=1) where studentid=2
錯誤,提示You can't specify target table 'student' for update in FROM clause
解決辦法:把查詢結果作為臨時表b,再次查詢賦值
update student set hobby=
(select b.hobby from
(select hobby from student where studentid=1) as b
)
where studentid=2
執行ok
3.用同一個表的查詢結果作為條件
update student set status =2 where studentid in( select studentid from student where studentid<10 and status=0 order by studentid asc limit 0,1)
錯誤,提示#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
update student set status =2 where studentid in( select studentid from student where studentid<10 and status=0 order by studentid asc )
錯誤,提示You can't specify target table 'student' for update in FROM clause
解決辦法:
改變查詢方式,
