MySQL UPDATE查询,其中id最高AND字段等于变量

Azz*_*ude 7 mysql

我正在尝试构建一个MySQL查询,它将在我的表中更新一行,其中id为最高,而一个名为idSession的字段等于65.它看起来像这样:

UPDATE `History` 
SET `state` = 0 
WHERE `id` = (SELECT MAX(id) FROM `History` WHERE `idSession` = 65);
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

"错误代码:1093.您无法在FROM子句中为更新指定目标表'历史'".

有人知道我的语法有什么问题吗?

Nie*_*sol 22

正是如此:当您根据完全相同的表中的条件更新同一个表时,无法从表中进行选择.(这是故意混淆写的:p)

试试这个:

UPDATE `History` SET `state`=0 WHERE `idSession`=65 ORDER BY `id` DESC LIMIT 1
Run Code Online (Sandbox Code Playgroud)

你可以使用ORDERLIMITin UPDATEDELETE查询;)


xda*_*azz 5

那这个呢:

UPDATE `History`
SET `state` = 0
WHERE `idSession` = 65
ORDER BY `id` DESC 
LIMIT 1
Run Code Online (Sandbox Code Playgroud)