使用查询从表中获取获胜者

时间:2013-08-20 20:09:03

标签: sql ms-access ms-access-2007 voting

我在Borlands Delphi 7中创建了一个投票应用程序,用于注册投票并更新访问表 我的访问表由两列组成,第1列是候选人的名字,第2列是他/她获得的票数

如果我想获得投票最多的候选人,那么SQL语句会是什么?

我试过了

SELECT Max(Candidate.[Candidate Name]) AS [MaxOfCandidate Name], Max(Candidate.[Number of  Votes]) AS [MaxOfNumber of  Votes]
FROM Candidate

;

但是这一个返回一个值,因此如果有2个或更多候选人具有相同的投票数,则只会显示第一个名称。

1 个答案:

答案 0 :(得分:1)

您可以使用Dmax表达式来确定最高投票数。并使用该值来检索与该计数匹配的行。

SELECT [Candidate Name], [Number of  Votes]
FROM Candidate
WHERE [Number of  Votes] = DMax("[Number of  Votes]", "Candidate");

DMax是特定于访问权限的。既然你正在使用Delphi,也许你更喜欢更便携的查询。如果是这样,您可以使用WHERE子句中的子查询来获得最大的投票数。

SELECT [Candidate Name], [Number of  Votes]
FROM Candidate
WHERE
    [Number of  Votes] = 
        (
            SELECT Max([Number of  Votes])
            FROM Candidate
        );