1.mysql中You can’t specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。
例如下面的语句就是错误的
update projecttoday set projectAgree = ((
SELECT projectAgree FROM projecttoday WHERE projectId = '4UP1ZgT'
)+1) where projectId = '4UP1ZgT'
应该先通过中间表再查询一遍之前查到的想要嵌套的数据,才能不出错。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题。
update projecttoday set projectAgree = ((
select pa.projectAgree from(
SELECT projectAgree FROM projecttoday WHERE projectId = '4UP1ZgT'
) pa
)+1) where projectId = '4UP1ZgT'