我已经广泛搜索了这个答案,并没有遇到任何符合我的SQL需求的其他问题/解决方案。因此,使用下面的两个表,我想找到每个客户的最新order_id,然后使用另一个表加入以获取订单明细(订单明细可能包含多个订单项)
客户表
customer order_id order_date
125 485695 1/10/2015
125 485696 2/10/2015
125 485697 3/10/2015
68 485700 6/10/2015
68 485701 12/21/2015
689 501200 8/10/2015
689 501201 8/11/2015
689 501202 8/12/2015
订单表
order_id item qty
485695 apple 1
485695 banana 2
485697 pumpkin 1
485697 apple 1
485700 pear 1
485701 pear 1
485701 plum 2
501200 banana 1
501201 orange 2
501202 apple 3
501202 pear 2
501202 orange 1
我正在寻找的结果将产生以下结果:
customer order_id order_date item qty
125 485697 3/10/2015 pumpkin 1
125 485697 3/10/2015 apple 1
68 485701 6/10/2015 pear 1
68 485701 6/10/2015 plum 2
689 501202 8/12/2015 apple 3
689 501202 8/12/2015 pear 2
689 501202 8/12/2015 orange 1
我尝试过类似的东西,但似乎没有办法:
SELECT c.customer, c.order_id, c.order_date, i.item, i.qty
FROM customers c
INNER JOIN items i ON c.order_id = i.order_id
WHERE c.order_id IN
(
SELECT max(order_id)
FROM customers
GROUP BY order_id
)
ORDER BY c.order_date DESC
非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
您走在正确的轨道上,您想要做的是按customer
(ID)而不是order_id
进行分组。
SELECT c.customer, c.order_id, c.order_date, i.item, i.qty
FROM customers c
INNER JOIN items i ON c.order_id = i.order_id
WHERE c.order_id IN
(
SELECT max(order_id)
FROM customers
GROUP BY customer
)
ORDER BY c.order_date DESC
当您按order_id
分组时,每个order_id
都包含在SELECT max(order_id)
查询中,因此每个商品订单都包含在选择所有订单的WHERE
子句中。< / p>