mySQL UPDATE值基于SELECT值值+1递增列值

时间:2011-09-03 10:59:36

标签: mysql

查询:

UPDATE nominees SET votes = ( SELECT votes
FROM nominees
WHERE ID =1 ) +1

错误:

  

您无法在FROM

中指定要更新的目标表'被提名者'

根据错误不确定那里有什么问题,这是我第一次尝试内联列,我猜你可以调用它。所以我很明显做错了什么但不知道如何解决它。

1 个答案:

答案 0 :(得分:12)

您的UPDATE查询缺少任何WHERE子句,因此即使MySQL允许它,效果也会是找到votes行的ID =1值加1然后使用结果更新表中的所有行。

我怀疑这不是理想的行为。要增加列值,只需执行

UPDATE nominees 
SET votes = votes +1
WHERE ID =1 

万一你想要你需要做的其他行为

UPDATE nominees
SET    votes = (select votes + 1
                FROM   (SELECT votes
                        FROM   nominees
                        WHERE  ID = 1) T)  

这种包装到派生表中可以避免出现You can't specify target table 'nominees' for update in FROM错误。