我有两张桌子:
表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
如果Answers表中没有数据,则下面的查询返回正确的结果(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,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,a.Answer FROM Questions q LEFT OUTER JOIN Answers a ON q.QuestionId = a.QuestionId WHERE a.PersonId = 2 OR a.PersonId IS null
上面的查询只返回一行是错误的,因为我在问题表中有两个问题&由于条件’或a.PersonId为空’,上述查询应返回它们.
为什么它没有返回两行?
期望的结果:
我想得到所有问题(2行)&那些PersonId有一些价值的答案,例如Person 2的两行,因为我在答案表中没有他的数据.