1

我刚刚问了这个问题Find the old 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

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

4

1 回答 1

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)

这是你的想法吗?

于 2012-07-24T04:30:09.660 回答