mysql查询将字段更新为max(field)+ 1
Posted
技术标签:
【中文标题】mysql查询将字段更新为max(field)+ 1【英文标题】:mysql query to update field to max(field) + 1 【发布时间】:2011-03-20 21:49:00 【问题描述】:我想做的是:
UPDATE table SET field = MAX(field) + 1 WHERE id IN (1, 3, 5, 6, 8);
在我看来,这个语句的语义首先是数据库会启动并为我确定field
在所有table
中的最大值是多少。然后它将对该值加 1,并将结果值分配给 id
1、3、5、6 和 8 行的 field
列。看起来很简单......
但是,当我尝试运行该查询时,mysql 卡住它并说:
ERROR 1111 (HY000): Invalid use of group function
你必须使用什么秘诀才能得到我想要的结果?
问候, 维克
【问题讨论】:
【参考方案1】:试试
UPDATE TABLE set field = ((SELECT selected_value FROM (SELECT MAX(field) AS selected_value FROM table) AS sub_selected_value) + 1) WHERE id in (1,3,5,6,8)
【讨论】:
你确实打败了我,但你缺少一个右括号:P【参考方案2】:为了绕过mysql-error-1093
,使用子查询/派生表/内联视图:
UPDATE table
SET field = (SELECT x.max_field
FROM (SELECT MAX(t.field) + 1 AS max_field
FROM TABLE t
WHERE t.id IN (1,3,5,6,8) ) x)
【讨论】:
t.id IN (1,3,5,6,8) **)** x)
后面少了一个括号以上是关于mysql查询将字段更新为max(field)+ 1的主要内容,如果未能解决你的问题,请参考以下文章
更新查询 - 设置 new_field = existing_field
《MongoDB入门教程》第16篇 文档更新之$min/$max操作符
《MongoDB入门教程》第16篇 文档更新之$min/$max操作符