即使条件失败,也要从表1中返回记录左连接表2

时间:2017-05-27 10:27:01

标签: mysql sql

我有两张桌子(科目,学生)

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与之无关(任何学生或与身份10的学生相关,我会得到结果。

但是如果主题1与id为11但没有id为10的其他学生相关联,我就不会得到任何结果。

我需要的是:即使主题与其他学生相关,我也应该获得主题表的结果。

我们有什么方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:2)

如果您不希望ID = 10以外的任何人看到学生记录,请将条件从WHERE移至ONstudents过滤后的行,select * from subjects sb left join students st on st.SubjID=sb.SubjID and st.ID=10 where sb.SubjID=1 仅过滤.pull-right表:

.pull-right
相关问题