我有一张如下表:
id rank user
1 1 1
2 1 1
3 1 2
4 2 1
5 2 1
我想rank
将给定用户的值分布在 1(或 0)和最大值之间,以便在值之间留出空间。例如,我想传播rank
for user 1
,最大值为 100 (在这种情况下),结果应该是:
id rank user
1 20 1
2 40 1
3 1 2
4 60 1
5 80 1
我想计算一个increment = maxValue / count(items) + 1
,然后对每个新UPDATE
的查询进行多次查询increment
,但这似乎效率极低。有没有办法做得更好,也许有一个大UPDATE
查询,比如:
UPDATE MyTable
SET rank = increment * ??? (?current position? in SELECT * FROM MyTable WHERE user = 1 ORDER BY rank)
WHERE user = 1