【问题标题】:MySQL give a rank to each groupMySQL给每个组一个排名
【发布时间】:2018-01-02 09:01:55
【问题描述】:

我要做的是用相同的id 更新所有行列,数量增加,当没有更多的id 时,我继续下一个。

表格:

id  column
1   0
1   0
2   0
2   0
3   0
3   0

我试过了:

SELECT @i:=0;
UPDATE table SET column = @i:=@i+1

这样我更新了列,但列值类似于 1 2 3 4 5 6 和 每次当行的id 发生更改时,我都必须将@i 重置回0。 或:

表格:

id  column
1   1
1   2
2   1
2   2
3   1
3   2

我想这应该由一个循环来完成。但是拿不到。另外,当我尝试在 MySQL (PHPMyAdmin) 中创建一个循环时,它给了我一个错误。我读到的是我不能直接在 PHPMyAdmin 中创建循环或者我误解了它?

【问题讨论】:

    标签: mysql phpmyadmin


    【解决方案1】:
    UPDATE table ,(SELECT @curRow := 0, @curCol := '') r SET column=
        ( CASE id WHEN @curCol  THEN @curRow := @curRow + 1  ELSE @curRow := 1 AND @curCol := id END)
    

    Test

    【讨论】:

    • 非常感谢!现在一切都好:) 为什么r 在那里?是关于recursive 还是什么?对于这个可悲的问题,我很抱歉。
    • @TomaTomov 每个子查询都需要一个别名,r 可以是任何东西。
    猜你喜欢
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2019-08-18
    相关资源
    最近更新 更多