从表1中返回记录左连接表2即使where条件未能
问题描述:
我有两个表(科目,学生)从表1中返回记录左连接表2即使where条件未能
Subjects-> SubjID, NAME
Students->ID, Name, SubjID
Subjects
SubjID Name
1 | Maths
Students
ID NAME, SubjID
11 | XYZ | 1
我需要有 - 用>
返回主题细节ID 1,并且如果ID为10的学生有此主题也会返回。
这是我的查询到目前为止。
select * from subjects sb
left join students st on st.SubjID=sb.SubjID
where sb.SubjID=1 and (st.ID is null or st.ID=10)
结果是我得到的是:
如果主题1不与(任何学生相关的或者与学生,ID是10相关的,我得到的结果
但如果拍摄对象1。与其他学生相关的ID说11但没有ID 10,我没有得到任何结果
我需要的是:即使主题是associa与其他一些学生一起,我应该得到主题表的结果。
有什么办法可以做到这一点?
答
如果你不希望看到学生的记录比ID = 10以外的任何人,从WHERE
移动的条件,它过滤行后加入,ON
,该过滤器只在students
表行:
select * from subjects sb
left join students st on st.SubjID=sb.SubjID and st.ID=10
where sb.SubjID=1
+0
太棒了。有效。谢谢 :) –
我觉得你太过于复杂了。而不是口头描述你想要的输出,你可以给我们看一张表吗? –