1
私は投票を格納するテーブルを持っています。私は候補者のランクを照会し、その上にランクされた候補者の投票にどれだけの票が必要であるかを見てほしい。mysqlのランクと減算のカウント
私の知る限り、私は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 num rank
1 42 1
6 16 2
8 9 3
2 3 4
7 1 5
4 1 6
を得たとして
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=6
は、それらの上にランクされた候補者と同等に26票を必要とします。 candidateid=2
は9に達するには6票しか必要ではなく、図面レベルはcandidateid=8
でなければなりません。