【问题标题】:Obtaining a winner from a table using a query使用查询从表中获取获胜者
【发布时间】:2013-08-20 20:09:02
【问题描述】:

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

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

我试过了

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

;

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

【问题讨论】:

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


    【解决方案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
            );
    

    【讨论】:

    • 非常感谢 HansUp。真的很有帮助,我从来不知道你可以有类似子查询的东西
    猜你喜欢
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 2014-06-16
    • 2020-10-20
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多