我有一个包含字段的表
表A)
当我运行sql命令
时SELECT id,
user,
`low_id`
FROM ( SELECT @r:= IF(@u = user, @r + 1,1) AS `low_id`,
id,
user,
@u:= user
FROM usertest,
(SELECT @i:= 1) AS r,
(SELECT @u:= 0) AS u
ORDER BY user
) AS usertest
表B) 我按以下方式选择
Id user low_ID -------------------- 1 100 1 2 200 1 3 100 Null 4 300 1 5 300 Null 6 100 Null -------------------
我希望上面的代码能够为每个用户记录永久更新序列1-n中的low_id 然后计数器重置为1以供下一个用户使用,并将每个低id值增加1 该用户的记录。
我想更新表格a),如表c)
表C)
Id user low_ID -------------------- 1 100 1 2 200 1 3 100 2 4 300 1 5 300 2 6 100 3 -------------------
答案 0 :(得分:1)
简单..按用户排序数据并计算次数..
UPDATE users u,
( SELECT id, if(@a = user, @b:=@b+1, @b:=1) as new_low, @a:= user
FROM users
CROSS JOIN(SELECT @a:=0, @b:=1)t
ORDER BY user, id
) t1
SET u.low_id = t1.new_low
WHERE u.id = t1.id;