Table: Candidate
+-----+---------+ | id | Name | +-----+---------+ | 1 | A | | 2 | B | | 3 | C | | 4 | D | | 5 | E | +-----+---------+
Table: Vote
+-----+--------------+ | id | CandidateId | +-----+--------------+ | 1 | 2 | | 2 | 4 | | 3 | 3 | | 4 | 2 | | 5 | 5 | +-----+--------------+ id is the auto-increment primary key, CandidateId is the id appeared in Candidate table.
Write a sql to find the name of the winning candidate, the above example will return the winner B
.
+------+ | Name | +------+ | B | +------+
Notes:
JOIN
and a temporary table [Accepted]Algorithm
Query in the Vote table to get the winner's id and then join it with the Candidate table to get the name.
MySQL
SELECT name AS 'Name' FROM Candidate JOIN (SELECT Candidateid FROM Vote GROUP BY Candidateid ORDER BY COUNT(*) DESC LIMIT 1) AS winner WHERE Candidate.id = winner.Candidateid ;