根据条件从mysql查询中获取父id

n6lpvg4x  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(313)

我有两个表一个是父表一个是子表。
当父表的状态等于0时,子表的状态不等于0时,并且仅当其不等于0时,我需要从父表中获取id
例如,表格如下所示:
父表

id , status
--------------------
1 , 0
2 , 0

子表

id , parent_id, status
------------------------

1  ,   2      , 2
2  ,   2      , 1
3  ,   2      , 1

我需要得到的是父表的id,并且仅当子表status的状态不为0时
这就是我所尝试的:

SELECT a.id FROM `parent_table` a inner join child_table b where b.status !=0 and a.status = 0 and a.id = b.parent_id

我需要的结果是:来自父表的id 2
谢谢你的帮助

oyxsuwqo

oyxsuwqo1#

您可以联接这两个表,按父id聚合,并使用 having 子句以筛选出其任何子女具有身份的父母 0 :

select p.id
from parent_table p
inner join child_table c on c.parent_id = p.id
group by p.id
having max(c.status = 0) = 0

实际上,您可以直接从子表得到相同的结果:

select parent_id
from child_table
group by parent_id
having max(status = 0) = 0

相关问题