У меня есть следующая таблица:
id rank user
1 1 1
2 1 1
3 1 2
4 2 1
5 2 1
Я хотел бы распределить значение rank
для данного пользователя между 1 (или 0) и максимальным значением, чтобы оставить пробел между значениями. Например, я хотел бы распространить rank
для пользователя 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