我有两张桌子。 “问题”:问题列表,“结果”用户会产生这些问题。
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
我正在寻找能够获得以下信息的查询(或两个)。
此查询应返回question.id = 55,因为它是唯一没有结果的问题。如果question.id = 55不存在那么它将返回question.id = 1,因为它具有问题的最早结果。
答案 0 :(得分:3)
如果你LEFT JOIN
这两个表,你可以使用ORDER BY
子句来做你需要的事情:
SELECT *
FROM
questions
LEFT JOIN results
ON results.q_id = questions.id
ORDER BY
ISNULL(results.id) DESC, results.created ASC
LIMIT 1
这会将任何没有结果的问题放在列表顶部,然后列出所有带结果的问题(“最早的问题排在第一”顺序)。 LIMIT 1
将只显示最高结果 - 这应该与您需要的结果相符。
答案 1 :(得分:0)
1-没有与之相关的结果的问题
select q.qid from questions q where q.qid not in ( select r.qid from result r )
2-找到最早结果的问题
select min(r.createdon) from result r