VB.NET& MYSQL - 选择不同的字段

时间:2013-02-04 09:35:48

标签: mysql vb.net

我目前正在开展一个投票系统项目。我有一个名为“dbName”的mysql数据库 字段

`for table "pospresident"
---------------|-------------|---------------- \n
  idCandidate  |  NumOfVote  |  CandidateName  \n
---------------|-------------|---------------- \n
    1          |    20       |      Joe
    2          |    30       |      Carlo
---------------+-------------+----------------

for table "posvpres"

---------------|-------------|----------------
  idCandidate  |  NumOfVote  |  CandidateName 
---------------|-------------|----------------
    1          |    15       |      Anne
    2          |    35       |      Lucas
---------------+-------------+----------------

and so on ...

`

我只想显示获得最高票数的不同表中候选人的所有姓名。我只需要了解我的SELECT查询应该如何。

2 个答案:

答案 0 :(得分:0)

使用UNION ALL从两个表中获取数据,然后将GROUP BYSUMHAVING一起使用,只获得具有MAX的候选人票。像这样:

SELECT
  idCandidate,
  CandidateName,
  SUM(NumOfVote) Votes
FROM
(
    SELECT * 
    FROM  pospresident p
    UNION ALL
    SELECT * 
    FROM posvpres v 
) AS t
GROUP BY idCandidate, CandidateName
HAVING SUM(NumOfVote) = (SELECT MAX(NumOfVote) 
                         FROM
                         (
                             SELECT  NumOfVote FROM posvpres
                             UNION ALL
                             SELECT  NumOfVote FROM pospresident 
                         ) t);

SQL Fiddle Demo

这会给你:

| IDCANDIDATE | CANDIDATENAME | VOTES |
---------------------------------------
|           2 |         Lucas |    35 |

答案 1 :(得分:0)

如果我理解正确,您需要单独从每个表中进行选择。尝试这样的事情:

SELECT idCandidate, 
   CandidateName 
FROM pospresident 
WHERE NumOfVote = (SELECT MAX(NumOfVote) FROM pospresident)

使用Mahmoud提供的小提琴:http://www.sqlfiddle.com/#!2/b3c82/4

祝你好运。