【问题标题】:Update all user records in the table and populate low_id 1 to N更新表中所有用户记录,填充low_id 1到N
【发布时间】:2014-08-27 01:31:29
【问题描述】:

我有一个包含字段的表格

表 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 用户 low_ID -------------------- 1 100 1 2 200 1 3 100 空 4 300 1 5 300 空 6 100 空 ------------------

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

我想像表 c) 一样更新表 A)

表 C)

ID 用户 low_ID -------------------- 1 100 1 2 200 1 3 100 2 4 300 1 5 300 2 6 100 3 ------------------

【问题讨论】:

  • 不确定表 a 是什么,但请查看我的答案以了解更新数据的方法

标签: php mysql


【解决方案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;

DEMO

【讨论】:

  • 如果可行,请您接受答案:) 不胜感激
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多