从表1中返回记录左连接表2即使where条件未能

从表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与其他一些学生一起,我应该得到主题表的结果。

有什么办法可以做到这一点?

+0

我觉得你太过于复杂了。而不是口头描述你想要的输出,你可以给我们看一张表吗? –

如果你不希望看到学生的记录比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

太棒了。有效。谢谢 :) –