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
子句中.
我广泛搜索了这个答案,但没有找到任何其他 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
子句中.