我们得到了一个名为“Orders”的表的架构:
CREATE TABLE country(
orderID VARCHAR,
customerID INTEGER,
shipperID VARCHAR
)
这是这张表的可视化图,取自 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 的总数
关于sql - 查找列中出现在 "every"类别中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40447606/