我有两张桌子(科目,学生)
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的其他学生相关联,我就不会得到任何结果。
我需要的是:即使主题与其他学生相关,我也应该获得主题表的结果。
我们有什么方法可以实现这个目标吗?
答案 0 :(得分:2)
如果您不希望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
仅过滤.pull-right
表:
.pull-right