更新表中的所有用户记录,并将low_id 1填充为N


Update all user records in the table and populate low_id 1 to N

我有一个包含字段的表

表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用户低_Id--------------------1 100 12 200 13 100零4 300 15 300零6 100零-------------------

我希望上面的代码为每个用户记录永久更新序列1-n中的low_id然后计数器为下一个用户重置为1,并为每个用户将低id值增加1记录。

我想更新表A)类似于表c)

表C)

Id用户低_Id--------------------1 100 12 200 13 100 24 300 15 300 26 100 3-------------------

simple。。按用户对数据进行排序并计算次数。。

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;

演示