15

私がやりたいことは次のとおりです。

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

私の考えでは、このステートメントのセマンティクスは、最初にデータベースがオフになりfield、すべてのの最大値が何であるかを判断することですtable。次に、その値に 1 を追加し、結果の値を1、3、5、6、および 8fieldの行の列に割り当てます。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 に答える