查找列中 "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 的总数
我们得到了一个名为 "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 的总数