vic*_*tcu 12 mysql sql mysql-error-1111
我想做的是:
UPDATE table SET field = MAX(field) + 1 WHERE id IN (1, 3, 5, 6, 8);
Run Code Online (Sandbox Code Playgroud)
在我看来,这个语句的语义首先是数据库会出现并确定我field
所有的最大值是什么table
.然后它会将1加到该值,并将结果值分配给field
具有id
1,3,5,6和8 的行的列.看起来很简单......
当我尝试运行该查询时,MySQL会对它进行扼杀并说:
ERROR 1111 (HY000): Invalid use of group function
Run Code Online (Sandbox Code Playgroud)
为了得到我想要的结果,你必须使用什么秘诀?
此致,维克
GWW*_*GWW 22
尝试
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)
Run Code Online (Sandbox Code Playgroud)
公然从这里扯下来
为了绕过它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)
Run Code Online (Sandbox Code Playgroud)