У меня есть таблица для хранения голосов. Я запрашиваю ранг кандидатов, и я также хочу, чтобы кандидат увидел, сколько голосов требуется для равенства голосов, принадлежащих кандидату, занятому непосредственно над ними.mysql ранг и вычитание счета
CREATE TABLE `vote` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`candidateid` int(11) NOT NULL,
`openid` varchar(2048) NOT NULL,
`weight` int(11) DEFAULT '1',
`time` bigint(20) DEFAULT NULL,
`date` varchar(56) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=73 DEFAULT CHARSET=utf8;
select t.* , @curRank := @curRank + 1 AS rank
from
(
SELECT candidateid,
count(*) as num
FROM vote p
group by candidateid
ORDER BY num desc
) t, (SELECT @curRank := 0) r
Насколько я
candidateid num rank
1 42 1
6 16 2
8 9 3
2 3 4
7 1 5
4 1 6
Я хочу, чтобы получить
candidateid num sub rank
1 42 0 1
6 16 26 2
8 9 7 3
2 3 6 4
7 1 2 5
4 1 0 6
например candidateid=6
требует, чтобы 26 голосов были равны кандидату, который был выше их. candidateid=2
требуется всего 6 голосов, чтобы достичь 9, уровень рисования с candidateid=8
.