我有两个表:父母和学生
学生表的父母ID为外键,学生的状态可以为“已满”或“左移”。多个学生可以属于一个父项。
我需要选择所有只有状态为'LEFT'的学生的家长行-即,如果他们有两个学生,一个LEFT和一个FULL,则该家长将被忽略。
我已经尝试了一堆查询等,但不确定如何解决。我还考虑过让所有学生查询,然后以某种方式遍历结果并退出没有任何FULL学生的父母-但还没有成功。
任何帮助,将不胜感激。
我正在使用PHP
最佳答案
您可以使用“存在”和“不存在”来仅获取“学生”表中处于左侧状态的父母。
select * from parent p
where exists ( select 1 from student s
where s.status ='LEFT'
and s.parent_id = p.id
)
and not exists ( select 1 from student s
where s.status ='FULL'
and s.parent_id = p.id
)
关于php - mySQL选择是否在其他表中没有匹配项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25986406/