我不知道如何以通用的方式解释这个问题,所以我将发布具体案例:
我有 3 张 table :
水手们:
S(ids, names, rating, age)
船:
B(idb, nameb, color)
预订:
Bo(ids, idb, date)
我必须编写一个查询来查找预订了每艘船的所有水手。
即使我发布了一个特定的案例,我也想要一个可以应用于同类问题的通用答案。
提前谢谢您。
最佳答案
您可以通过以下查询获取预订了每艘船的水手的 ID:
select ids
from bookings
group by ids
having count(distinct idb) = (select count(*) from boats)
因此可以将其与运算符 IN
一起使用:
select * from sailors
where ids in (
select ids
from bookings
group by ids
having count(distinct idb) = (select count(*) from boats)
)
或加入水手
:
select s.*
from sailors s
inner join (
select ids
from bookings
group by ids
having count(distinct idb) = (select count(*) from boats)
) t on t.ids = s.ids
关于sql - 找到每艘船上的水手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64847149/