MySQL给每个组一个排名
Posted
技术标签:
【中文标题】MySQL给每个组一个排名【英文标题】:MySQL give a rank to each group 【发布时间】: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 中创建循环或者我误解了它?
【问题讨论】:
【参考方案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 可以是任何东西。以上是关于MySQL给每个组一个排名的主要内容,如果未能解决你的问题,请参考以下文章