我正在尝试构建一个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)
你可以使用ORDER和LIMITin UPDATE和DELETE查询;)
那这个呢:
UPDATE `History`
SET `state` = 0
WHERE `idSession` = 65
ORDER BY `id` DESC
LIMIT 1
Run Code Online (Sandbox Code Playgroud)