代码之家  ›  专栏  ›  技术社区  ›  vicatcu

mysql查询将字段更新为max(field)+1

  •  12
  • vicatcu  · 技术社区  · 14 年前

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

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

    但是,当我尝试运行该查询时,MySQL阻塞了它并说:

    ERROR 1111 (HY000): Invalid use of group function
    

    你要用什么秘方才能得到我想要的结果?

    当做,

    2 回复  |  直到 14 年前
        1
  •  26
  •   Agnel Vishal danniel    5 年前

    尝试

    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)
    
        2
  •  8
  •   Nisse Engström sting_roc    8 年前

    为了绕过 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)