gpt4 book ai didi

MYSQL SELECT 最新条目和 JOIN 表,每个订单号包含多个项目

转载 作者:行者123 更新时间:2023-11-29 21:49:39 25 4
gpt4 key购买 nike

我已经广泛搜索了这个答案,但没有遇到任何其他符合我的 SQL 需求的问题/解决方案。因此,通过下面的两个表,我想找到每个客户最近的 order_id,然后与另一个表 JOIN 以获取订单详细信息(订单详细信息可能包含多个行项目)

客户表

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

任何帮助将不胜感激。谢谢!

最佳答案

您的方向是正确的,您想要做的是按 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 子句中选择所有订单。

关于MYSQL SELECT 最新条目和 JOIN 表,每个订单号包含多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33770021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com