我的数据如上所示。
我想找到在第二个订单中订购不同类别的客户,而不是在第一个订单中订购不同类别的客户。例如。在上图中,ALFKI 在他的第一个订单(即 10643)中订购了类别 1、7、8,在他的第二个订单(即 10692)中,他订购了类别 2。我想要一份所有此类客户的列表。提前致谢。
我认为您想要以下方面的内容:
select distinct tbl1.CustomerID from <table> tbl1
where
(select count(*) from <table> tbl2 where tbl1.CustomerID = tbl2.CustomerID
and
tbl1.OrderID <> tbl2.OrderID) > 1
AND
tbl1.CategoryID not in
(select CategoryID from <table> tbl3
where tbl3.OrderID < tbl1.OrderID
and tbl1.CustomerID = tbl3.CustomerID)
这里的想法(假设我做对了,没有测试 - 我知道很危险)是你想要:
它有两个相关的子查询,因此根据您的数据集大小,它可能运行得不是很快——而且我可能误解了您的要求。但是,希望这足以让您入门。
如果您不知道如何使用相关子查询,请尝试查看此处:Wikipedia - Correlated Subquery