SQL 如何 select "id_owner" 包含列表中的所有汽车

SQL How to select "id_owner" that contains all cars from a list

我正在尝试从虚构的 table 汽车及其所有者(例如 "id"、"owner_id"、"carname").此车主列表应包含另一个列表中的所有汽车。

应该是这样的: SELECT id_owner FROM ownedcars WHERE carname = "Ferrari" or carname = "Mustang" or carname = "Porsche"

我认为它需要在子查询中进行,因为我尝试过所有方法,列表 returns 所有 id_owners 包含此列表中的任何一辆汽车,而不是包含所有三辆汽车名单

这可以通过 group byhaving 来完成。

SELECT id_owner 
FROM ownedcars 
WHERE carname in ('Ferrari','Mustang','Porsche')
GROUP BY id_owner
HAVING COUNT(DISTINCT carname) = 3

I think its needed to do it in a subquery because all the ways I tried, the list returns all id_owners that contain any of car of this list, instead of contain all three cars of the list

根据以上信息,您可以使用 EXISTS 运算符来实现您的目标。

SELECT id_owner FROM ownedcars T
WHERE EXISTS (SELECT 1 FROM ownedcars WHERE carname='Ferrari' AND id_owner=T.id_owner)
AND EXISTS (SELECT 1 FROM ownedcars WHERE carname='Mustang' AND id_owner=T.id_owner)
AND EXISTS (SELECT 1 FROM ownedcars WHERE carname='Porsche' AND id_owner=T.id_owner)

此致,