【问题标题】:Trying to update a table with a value from the same table尝试使用同一表中的值更新表
【发布时间】: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' 的目标和单独的数据源

【问题讨论】:

标签: mysql sql


【解决方案1】:

这是 MySQL 的限制。

一种方法是使用JOIN。但是,为此最好使用LIMITORDER BY

UPDATE seasons s 
    SET s.good = s.good + 1 
    ORDER BY id DESC
    LIMIT 1;

这确实假设id 在表中没有重复,但对于名为id 的列来说,这似乎是一个合理的假设。

【讨论】:

  • 我读到了在查询的更新部分使用表别名来解决问题的解决方法。据您所知,这是一个有效的选择吗?从来没有尝试过,因为我以前从未遇到过问题
猜你喜欢
  • 1970-01-01
  • 2017-11-17
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2018-09-06
  • 2016-07-22
  • 2018-03-16
  • 1970-01-01
相关资源
最近更新 更多