繁体   English   中英

SQL选择记录的相关记录数最少

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM