查找列中 "every" 类别中出现的元素

Finding elements that appear in "every" category in a column

我们得到了一个名为 "Orders" 的 table 的架构:

CREATE TABLE country(
    orderID VARCHAR,
    customerID INTEGER,
    shipperID VARCHAR
)

这是这个 table 的可视化,摘自 w3school 的 SQL 教程:

我想从每个 shipperID 中获取至少订购过一次的 customerID。

一种方法是识别只有三个唯一的 shipperID(1、2 和 3),因此我们可以执行三个笛卡尔积并以这种方式识别 customerID。但是,我想以这样一种方式编写查询,即有多少个 shipperID 并不重要。

对于关系代数,这可以通过除法相当简单地完成。在 SQL?

中有没有一种简单的方法可以进行这样的查询

你可以使用一个组...有一个子选择

select CustomerID 
from Orders 
group by CustomerID
having count(distinct ShipperID) = ( select count(distinc ShipperID) from Orders)

分组依据为每个 CustomerID 提供 shipperID 的数量..检查这是否等于 ShipperID 的总数