首页 > 解决方案 > 想找出仅由单个作者撰写且 p_id=1 的 book_id

问题描述

我有 3 张桌子。

这是人员表:

这是汽车表:

在此处输入图像描述

这是 Person_car 表的多对多连接列:

在此处输入图像描述

现在我想找出c_id一个人拥有的(汽车ID)并且p_id = 1。

这意味着在这种情况下,我应该得到 c_id,因为 100 bcs c_id 200 由 p_id 1 和 2 拥有

请帮我写sql查询。

标签: sqloracleoracle-sqldeveloperhaving-clause

解决方案


您可以使用聚合:

select c_id
from person_car
group by c_id
having count(*) = 2                                      -- owned by 2 persons
   and max(case when p_id = 100 then 1 else 0 end) = 1   -- including p_id 100

在 MySQL 中,我们可以将最后一个条件缩短为:

and max(p_id = 100) = 1

推荐阅读