【发布时间】:2018-06-16 20:27:26
【问题描述】:
UPDATE seasons SET good=good+1 WHERE id = (SELECT id FROM seasons ORDER BY id DESC LIMIT 1)
当我运行这个命令时,我得到了错误:
#1093 - 表 'seasons' 被指定了两次,作为 'UPDATE' 的目标和单独的数据源
【问题讨论】:
UPDATE seasons SET good=good+1 WHERE id = (SELECT id FROM seasons ORDER BY id DESC LIMIT 1)
当我运行这个命令时,我得到了错误:
#1093 - 表 'seasons' 被指定了两次,作为 'UPDATE' 的目标和单独的数据源
【问题讨论】:
这是 MySQL 的限制。
一种方法是使用JOIN。但是,为此最好使用LIMIT 和ORDER BY:
UPDATE seasons s
SET s.good = s.good + 1
ORDER BY id DESC
LIMIT 1;
这确实假设id 在表中没有重复,但对于名为id 的列来说,这似乎是一个合理的假设。
【讨论】: