MYSQL SELECT 最近的条目和 JOIN table 每个订单号有多个项目

MYSQL SELECT most recent entry and JOIN table with multiple items per Order Number

我广泛搜索了这个答案,但没有找到任何其他 question/solution 符合我 SQL 需要的答案。因此,对于下面的两个 table,我想找到每个客户最近的 order_id,然后与另一个 table 加入以获得订单详细信息(订单详细信息可能包括多个行项目)

顾客table

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

订单table

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

如有任何帮助,我们将不胜感激。谢谢!

你走在正确的轨道上,你想要做的是按 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 子句中.