我有两个表:
表 1:问题:
QuestionId NUMERIC
Title TEXT
问题表中的测试数据:
QuestionId Title
1 What is your name?
2 What is your age?
表 2:答案:
AnswerId NUMERIC
PersonId NUMERIC
QuestionId NUMERIC
Answer TEXT
如果答案表中没有数据,则下面的查询将返回正确的结果(2 行):
SELECT q.QuestionId, q.Title, a.Answer
FROM Questions q
LEFT OUTER JOIN Answers a ON q.QuestionId = a.QuestionId
WHERE a.PersonId = 2 OR a.PersonId IS null
但是,如果我在答案表中有例如 1 条记录,例如:
AnswerId 1
PersonId 1
QuestionId 1
Answer 'My Name is Yaqub'
下面的查询工作正常:
SELECT q.QuestionId, q.Title, a.Answer
FROM Questions q
LEFT OUTER JOIN Answers a ON q.QuestionId = a.QuestionId
WHERE a.PersonId = 1 OR a.PersonId IS null
但是这个查询只返回一行:
SELECT q.QuestionId, q.Title, a.Answer
FROM Questions q
LEFT OUTER JOIN Answers a ON q.QuestionId = a.QuestionId
WHERE a.PersonId = 2 OR a.PersonId IS null
上面的查询只返回一行是错误的,因为我在问题表中有两个问题,上面的查询应该返回它们,因为条件“OR a.PersonId IS null”。
为什么它不返回两行?
期望的结果:
我想获取所有问题(2 行)和 PersonId 具有某些价值的答案,例如 Person 2 的两行,因为我在答案表中没有他的数据。