我在 SQL 中有一个数组,其中包含所有订单和这些订单中的所有产品,我需要找到从未在一个订单中一起订购的所有产品对。
我从这样的事情开始
SELECT a.orderid, a.productid, b.OrderID, b.ProductID from [Order Details] a cross join [Order Details] b
except
SELECT a.orderid, a.productid, b.OrderID, b.ProductID from [Order Details] a cross join [Order Details] b
where a.ProductID=b.ProductID
但我不知道如何消除其余可能的配对,以便只剩下我需要的配对。
编辑:稍微修改了查询,采用了不同的方法。我越来越近了,但仍然不知道如何摆脱像 ab 和 ba 这样的重复
select p1.productid, p2.productid from products p1 join products p2 on p1.productid<>p2.productid
except
select a.productid, b.productid from [Order Details] a join [Order Details] b on a.ProductID<>b.ProductID
where a.OrderID=b.OrderID