[英]SQL select records with minimum number of related records
猴子环聊将许多猴子与许多树木联系起来,反之亦然。 一只猴子在多棵树上闲逛。 一棵树上有多只猴子。 猴子环聊将多对多的猴子建模为树木。
很大一部分猴子只在一棵树上闲逛。 我想查询一下挂在多棵树上的猴子。 也就是说,猴子在环聊中具有多个相关记录的猴子。 作为奖励,我希望查询结果是实际视频群聊的猴子X树联接。
这是一个查询,用于选择所有猴子及其环聊。 将其限制为具有多个视频群聊的猴子。
select
m.*, t.*
from
monkeys m
inner join
monkey-hangouts h on m.id = h.monkey_id
inner join
trees t on t.id = h.tree_id
order by
m.id;
您可以通过汇总猴子并计算树木数量来做到这一点:
select m.*
from monkeys m join
monkey_hangouts mh
on m.id = mh.monkey_id
group by m.id
having count(distinct mh.tree_id) > 1;
编辑: distinct mh.tree_id
此查询选择所有具有1个以上的视频群聊的猴子及其树。
select m.*, t.*
from monkeys m
inner join monkey_hangouts h on m.id = h.monkey_id
inner join trees t on t.id = h.tree_id
where m.id in (select monkey_id
from monkey_hangouts
group by monkey_id
having count(*) > 1)
order by m.id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.