我想更新一列,其值为0到该列的最大值(在单个查询中)。在单个查询的每个更新中将列更新为最大列数。
有很多0值的记录。
我这样做:
UPDATE table SET field = (SELECT MAX(field) + 1) WHERE field = 0;
但它更新每个记录相同的值。 我们可以在每一行更新中获得最大值吗?
我想更新一列,其值为0到该列的最大值(在单个查询中)。在单个查询的每个更新中将列更新为最大列数。
有很多0值的记录。
我这样做:
UPDATE table SET field = (SELECT MAX(field) + 1) WHERE field = 0;
但它更新每个记录相同的值。 我们可以在每一行更新中获得最大值吗?
您似乎想要增量从下一个可能值开始的值。这里有一种方法:
update table t cross join
(select @rn := max(field) from table) var
set t.field = (@rn := @rn + 1)
where field = 0;
我不明白:为什么最大值应该在每次更新时都改变? Max是最大值,并且即使在更新后也总是一样.. –
可以提供表格结构 – Snehal
@Lorenzo Marcon假设有3条记录,如果它更新第一个到最大值说101其余两个应该是102和103.但它把101放在每个。 – Vitthal