Mysql 更新表格,将每行从最大值增加1
我试图在考虑字段的最大值的同时,将多行order字段增加1 创建表(如果不存在)`jobs` `id`INT11非空自动增量, `名称'VARCHAR128不为空, `订单'INT11不为空默认值0, 主键'id'; 在'jobs'中插入'VALUESJohn、Steven、Marie、Clair、Richard、Rober、Barbara 使现代化 `jobs`AS`j1`, 从作业“j2”中选择最大“订单”作为“最大” 设置`j1`.`order`=`j2`.`max`+1 其中`j1`.`id`>4 它将Richard、Rober和Barbara的行数设置为1,我希望是1,2,3,如果我再次执行它,我希望它们是4,5,6Mysql 更新表格,将每行从最大值增加1,mysql,sql,sql-update,max,Mysql,Sql,Sql Update,Max,我试图在考虑字段的最大值的同时,将多行order字段增加1 创建表(如果不存在)`jobs` `id`INT11非空自动增量, `名称'VARCHAR128不为空, `订单'INT11不为空默认值0, 主键'id'; 在'jobs'中插入'VALUESJohn、Steven、Marie、Clair、Richard、Rober、Barbara 使现代化 `jobs`AS`j1`, 从作业“j2”中选择最大“订单”作为“最大” 设置`j1`.`order`=`j2`.`max`+1 其中`j1`.`
我知道,如果列顺序是自动递增/唯一的,那就太完美了,但在这种情况下就不可能了。如果可以使用用户定义的变量,那么就可以这样做
UPDATE
`jobs` AS `j1`
cross join (
select @r:= (SELECT MAX(`order`) AS `max` FROM jobs)
) t
SET `j1`.`order` = @r:= @r + 1
WHERE `j1`.`id` > 4
没有必要存储这些信息。你可以随时计算。而要求列顺序只是自找麻烦。