As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center提供指导。




已关闭8年。




我收到了这个MySQL面试问题,这使我不具备任职的资格。

我去面试,被问到一个我无法回答的问题,我丢了工作。

他们问过。

我们有两个表,第一个表(主表)是带有字段的CANDIDATES:
  • candidate_id(primary_key)
  • candidate_name

  • 第二个表(子表)是带有字段的CANDIDATE_VOTES:
  • v_id(主键)
  • candidate_id(外键)

  • 每次投票时,都会将候选者的候选人候选者放在 child 中。
    CANDIDATE:
    =================================
    |candidate_id | candidate_Name  |
    |-------------------------------|
    | 1           | abc             |
    |-------------------------------|
    | 2           | xyz             |
    |-------------------------------|
    | 3           | etc             |
    |-------------------------------|
    
    CANDIDATE VOTES
    ==========================
    | votes_id | candidate_id |
    |-------------------------|
    | 1        | 1            |
    |-------------------------|
    | 2        | 1            |
    |-------------------------|
    | 3        | 2            |
    |-------------------------|
    

    问题是您如何宣布获胜者?

    请帮我怎么做。

    我尝试了很多,但找不到逻辑。

    最佳答案

    您应该退回所有获得最多票数的候选人:

    SELECT   candidates.*
    FROM     candidates JOIN candidate_votes USING (candidate_id)
    GROUP BY candidate_id
    HAVING   COUNT(*) = (
      SELECT   COUNT(*)
      FROM     candidate_votes
      GROUP BY candidate_id
      ORDER BY votes DESC
      LIMIT    1
    )
    

    sqlfiddle上看到它。

    关于MySQL面试,这使我失去了这份工作的资格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12176374/

    10-11 03:06