查找具有最少关联记录的记录

时间:2012-07-24 04:19:43

标签: mysql sql join

我刚问了这个问题Find the oldest record in a join between two tables并对我的问题得到了很好的答案。问题是,这不是我想要的(我的错)

考虑以下MySQL表

Table: Questions
   ID

Table: Results
   ID 
   Created - When this record was added. 
   Q_ID - A FK to the Question table 

示例数据

Table: Questions
   ID 
   ----
    1
    8
   15
   55

Table: Results
   ID | Created | Q_ID 
   --------------------
    1 |   12:02 |    1 
    2 |   12:03 |   15 
    3 |   12:04 |    8  

使用以下查询,它将返回没有与之关联的结果的所有记录,如果所有记录都有结果,则它将返回具有最早结果的问题。

SELECT *
FROM
    questions
    LEFT JOIN results
        ON results.q_id = questions.id
ORDER BY
    ISNULL(results.id) DESC, results.created ASC
LIMIT 1

我实际上寻找的是任何尚未回答的问题,然后将问题排序为我们已经回答了多少次。至少回答的问题应该在最顶层。

1 个答案:

答案 0 :(得分:2)

这会给你每个问题,以及与之相关的结果数量(即使没有结果)。他们将以最低的数量订购:

SELECT Questions.ID, COUNT(Results.ID) Result_Count
FROM
    Questions
    LEFT JOIN Results ON Questions.ID = Results.Q_ID
GROUP BY Questions.ID
ORDER BY COUNT(Results.ID)

这是你的想法吗?