Mysql 即使where条件失败,也从表1返回记录并将其左键联接到表2

Mysql 即使where条件失败,也从表1返回记录并将其左键联接到表2,mysql,sql,Mysql,Sql,我有两张桌子(科目,学生) 我需要的-> 返回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的其他

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

我需要的->

返回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的其他学生关联,我不会得到任何结果

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


有什么方法可以实现这一点吗?

如果您不想看到ID=10以外的任何人的学生记录,请将条件从
WHERE
移动到
ON
,该条件只过滤
学生
表中的行:

select * from subjects sb
left join students st on st.SubjID=sb.SubjID and st.ID=10
where sb.SubjID=1

我认为你把这件事复杂化了。你能不能给我们看一张表格,而不是口头描述你想要的输出?
select * from subjects sb
left join students st on st.SubjID=sb.SubjID and st.ID=10
where sb.SubjID=1