Php 在单个查询的每次更新中将列更新为最大列数。
我想在单个查询中将值为0的列更新为该列的最大值 有许多值为0的记录 我正在这样做:Php 在单个查询的每次更新中将列更新为最大列数。,php,mysql,sql,sql-update,Php,Mysql,Sql,Sql Update,我想在单个查询中将值为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
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是Max,即使在更新后也始终不变。您能提供表吗structure@LorenzoMarcon假设有3条记录为0。若它将第一个更新为最大值101,则剩余的两个应为102和103。但它每一个都有101个。@Snehal-like:id | int| field它的工作原理是:只需要一点修正。。。更新表t交叉连接select@rn:=从表变量集合t中选择maxfield=@rn:=@rn+1,其中field=0@维塔尔。它不需要额外的子查询。该查询已修复。