15

我想做的是:

UPDATE table SET field = MAX(field) + 1 WHERE id IN (1, 3, 5, 6, 8);

在我看来,这个语句的语义首先是数据库会关闭并为我确定field所有table. 然后它将对该值加 1,并将结果值分配给field具有 1、3、5、6 和 8 的行的列id。看起来很简单......

但是,当我尝试运行该查询时,MySQL 会窒息并说:

ERROR 1111 (HY000): Invalid use of group function

为了得到我想要的结果,你必须使用什么秘方?

问候,维克

4

2 回答 2

29

尝试

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)
于 2010-07-26T03:41:52.760 回答
9

为了绕过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)
于 2010-07-26T03:40:06.663 回答