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 子句和更新目标。

UPDATEDELETE 操作使用同一张表进行更新/删除和子查询是非法的。

【讨论】:

好吧,因为我对此无能为力,所以我决定创建另一个 sp 来获取最后插入的 id.. 无论如何,谢谢。 :)【参考方案2】:

等一下。为什么要使用 AND 来分隔 SET 子句元素?必须用逗号分隔。

【讨论】:

以上是关于MySQL 更新语句错误的主要内容,如果未能解决你的问题,请参考以下文章

带有 TINYINT 变量的更新语句在 mySQL 中引发错误 [关闭]

使用 case 语句从 SELECT 更新记录。 (mysql)

mysql update语句运行无错误但是没有更新

求助一条mysql 更新 语句 where 后面为查询的结果

MySql 错误:无法更新存储函数/触发器中的表,因为它已被调用此存储函数/触发器的语句使用

在 Mysql 中使用 select 语句进行更新