我试图从问题表中获取所有记录,无论它们是否存在于答案表中.共有50个问题,但我只检索了49个.我做错了什么?
select
q.question_txt
from
apdev.form_template.question q
left join
apdev.form_submission.answer a on q.question_id = a.question_id
where
a.submission_id = 2704336
and q.form_id = 23
Run Code Online (Sandbox Code Playgroud)
经典错误.除了第一个表之外的所有条件都需要在on子句中进行:
select q.question_txt
from apdev.form_template.question q left join
apdev.form_submission.answer a
on q.question_id = a.question_id and a.submission_id = 2704336
where q.form_id = 23;
Run Code Online (Sandbox Code Playgroud)
为什么?的left join产生NULL为值submission_id在非匹配的行.条件a.submission_id = 2704336失败.虽然你可以添加(a.submission_id = 2704336 or a.submission_id is null),但它没有相同的语义.这对你来说是一个很好的练习,可以找出解决问题的原因.