我有一个订单表。每个订单都链接到一个或多个购物篮项目。如何获取最后5个唯一的产品ID?
Basic代码:
SELECT * FROM Orders o JOIN OrderItems oi ON o.OrderNumber = oi.OrderNumber
我可以做这个限制的最后5个项目:
ORDER BY oi.CreatedDate DESC LIMIT 5
然而,在某些情况下,用户已经横放在同一产品的多个订单。例如
OrderNo ItemNo ProductId
1 1 70
1 2 20
2 1 80
2 2 30
3 1 10
4 1 90
5 1 10
6 1 40
7 1 50
8 1 100
9 1 10
10 1 30
11 1 10
12 1 60
如果我能在过去五年的项目,我想最终60,10,30,10,100什么其实我想要的是得到最后5个独特的产品标识 - 这样会是60,10,30,100,50.这是什么SQL?
编辑
如果我使用GROUP BY我得到60,100,50,40,90哪里是30?
的问题是,'ORDER BY'发生之前'集团BY'以某种方式执行。 – vulkanino 2012-03-06 12:50:53
请看我对答案的修改。 – vulkanino 2012-03-06 13:04:33