gpt4 book ai didi

mySQL - 查询以获取具有特定列的唯一值的前 2 条记录

转载 作者:行者123 更新时间:2023-11-29 07:24:28 25 4
gpt4 key购买 nike

我有一个记录和处理产品订单的应用程序。从最初创建订单到最终提交履行订单,在此过程中,一名或多名员工可能会更改其一项或多项属性 1 次或多次。我将订单号和开始订单的员工存储在 1 个表中,然后将对所有订单(包括开始详细信息)的所有更改存储在另一个表中。像这样:

订单

ORDER_ID   EMPLOYEE
1 dan
2 dan
3 fred

订单事件

ACTIVITY_ID    ORDER_ID    UPDATER    DATE      QTY    SIZE    COLOR    STATUS
1 1 dan 1/1/2017 5 m red new
2 1 dan 1/3/2017 15 m red updated
3 1 tom 1/9/2017 15 l red submitted
4 2 dan 1/1/2017 25 l blue new
5 2 tom 1/1/2017 25 l blue submitted
6 3 fred 1/9/2017 15 s red new
7 3 fred 1/10/2017 5 l red updated
8 3 fred 1/11/2017 5 m red updated
9 3 tom 1/11/2017 5 m red submitted

我需要显示发起订单的员工最近的 2 个订单,以及状态更改为“已提交”时订单的属性(数量、尺寸和颜色)。

如果我只需要一个订单(最近的),我想我可以使用:

SELECT 
Orders.EMPLOYEE,
Order_Activity.QTY,
Order_Activity.SIZE,
Order_Activity.COLOR FROM Orders
INNER JOIN Order_Activity
ON Orders.ORDER_ID = Order_Activity.ORDER_ID
ORDER BY Order_Activity.date DESC LIMIT 1

但是,我很难想象如何找到具有不同 ORDER_ID 值的下一条记录,同时将其全部保留在一个查询中。

谁能帮我查询生成这样的东西(基于上面提供的数据):

ORDER_ID    EMPLOYEE    QTY    SIZE    COLOR
3 fred 5 m red
1 dan 15 l red

或者甚至不能在 1 个查询中完成?

最佳答案

您可以对最大日期组 da order_id 的子查询使用内部联接

select o.ORDER_ID, o.EMPLOYEE , oa.QTY, oa.SIZE, oa.SIZE
from Orders o
inner join Order_Activity oa on o.ORDER_ID = oa.ORDER_ID
inner join (
select ORDER_ID, max(date) max_date
from Order_Activity
group by ORDER_ID
) tt on tt.ORDER_ID = o.ORDER_ID
and tt.max_date = oa.date

关于mySQL - 查询以获取具有特定列的唯一值的前 2 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54580800/

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