我在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个或更多候选人具有相同的投票数,则只会显示第一个名称。
答案 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
);