2013-08-20 45 views
1

我在Borland 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

您可以使用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 
     ); 
+0

非常感謝HansUp。真的幫助,我從來不知道你可以有一個像子查詢 –