Ich habe eine Tabelle, um die Stimmen zu speichern. Ich frage den Rang der Kandidaten ab, und ich möchte auch, dass der Kandidat sieht, wie viele Stimmen erforderlich sind, um den Stimmen des Kandidaten zu entsprechen, der unmittelbar über ihnen steht.Mysql Rang und Subtraktion der Zählung
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
Soweit ich
bekamcandidateid num rank
1 42 1
6 16 2
8 9 3
2 3 4
7 1 5
4 1 6
I
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
erhalten möchten z.B. candidateid=6
erfordert 26 Stimmen, um den Kandidaten über ihnen gleichrangig zu sein. candidateid=2
benötigt nur 6 Stimmen, um 9 zu erreichen, Zeichenebene mit candidateid=8
.