MySQL 更新语句错误
Posted
技术标签:
【中文标题】MySQL 更新语句错误【英文标题】:MySQL Update statement error 【发布时间】:2011-05-03 19:22:19 【问题描述】:我有两个脚本,一个用于插入,另一个用于更新。
我的更新按钮脚本正在使用最新插入的 ID,并继续如下:
Update tblsurvey
set WouldLikeToBeSeenOnSite = 'sadffas'
and DislikedOnSite = 'asdfsadfsadf'
and OtherNewsWebsitesRead = 'asdfsadfa'
and LikedOnOtherNewsSites = 'asdfsadfas'
and IPAddress = '172.16.0.123'
and DateAnswered = current_date()
where SurveyResponseId in (select max(SurveyResponseId) from tblsurvey);
显然,“where”子句会产生错误:
1093 - you cant specify target table 'tblsurvey' for update in FROM clause.
有没有其他方法可以使用我正在更新的同一个表的最新插入的 ID?
谢谢。
【问题讨论】:
【参考方案1】:您不能将同一张表(在本例中为表 tblsurvey)同时用于子查询 FROM 子句和更新目标。
UPDATE
和DELETE
操作使用同一张表进行更新/删除和子查询是非法的。
【讨论】:
好吧,因为我对此无能为力,所以我决定创建另一个 sp 来获取最后插入的 id.. 无论如何,谢谢。 :)【参考方案2】:等一下。为什么要使用 AND 来分隔 SET 子句元素?必须用逗号分隔。
【讨论】:
以上是关于MySQL 更新语句错误的主要内容,如果未能解决你的问题,请参考以下文章
带有 TINYINT 变量的更新语句在 mySQL 中引发错误 [关闭]
使用 case 语句从 SELECT 更新记录。 (mysql)
求助一条mysql 更新 语句 where 后面为查询的结果