我有两个表:父母和学生

学生表的父母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/

10-11 21:55
查看更多