gpt4 book ai didi

mysql - 返回带有连接数据的 MAX 选择记录

转载 作者:行者123 更新时间:2023-11-29 16:28:32 26 4
gpt4 key购买 nike

我有下表,我正在尝试从最新生产时期选择小麦的数量。我需要返回金额和 period_ID 的名称。

我有一个查找表,可以轻松地将Period_ID 与正确的时间顺序关联起来。 (表周期)

Table: Periods
Period_ID | Period_Order
-----------------------------
18JANP | 51
18FEBP | 52
18MARP | 53
18APRP | 54
18MAYP | 55


Table: Production
Farm_ID | Amount | Period_ID
--------------------------------------------
11-230 | 1500 | 18JANP
11-230 | 0 | 18FEBP
11-230 | 300 | 18MARP
11-230 | 600 | 18APRP
11-232 | 400 | 18JANP
11-232 | 900 | 18FEBP
11-232 | 300 | 18MARP
11-232 | 0 | 18APRP
11-232 | 100 | 18MAYP

这是我当前正在尝试的查询:

SELECT Farm_ID, 
MAX(Periods.Period_Order),
Amount
FROM Production
INNER JOIN Periods ON Production.Period_ID = Periods.Period_ID
WHERE Amount > 0
GROUP BY Farm_ID

我知道在上面的示例中,“金额 > 0”确实是不必要的,但是在某些情况下,最后一个周期可能没有返回金额,因此我必须能够进一步回顾。

我希望它返回:

Farm_ID: 11-230
Amount: 600
Period_ID: 18APRP
Period_Order: 54

并且

Farm_ID: 11-232
Amount:100
Period_ID:18MAYP
Period_Order: 55

但是我得到的是正确的金额和周期订单,但周期 ID 不正确:它看起来像这样(为简洁起见,仅记录一条):

 Farm_ID: 11-230
Amount: 600
Period_ID: 18JANP
Period_Order: 54

这就像连接部分工作,但我不明白为什么我没有从连接表中获取正确的关系数据。

最佳答案

您可以使用子查询来获取最大周期

(没有 farm_id 的原始问题)

  select a.Period_ID, a.amount, b.Period_Order 
from Periods a
inner join Production b on a.Period_ID = b.Period_ID
inner join (
select MAX(Periods.Period_Order) max_per
FROM Periods a
INNER JOIN Production b on a.Period_ID = b.Period_ID
WHERE b.Amount > 0
) t on t.max_per = a.order

用农场_id修改问题

  select a.Period_ID, a.amount, b.Period_Order , b.farm_id
from Periods a
inner join Production b on a.Period_ID = b.Period_ID
inner join (
select MAX(Periods.Period_Order) max_per, b.farm_id
FROM Periods a
INNER JOIN Production b on a.Period_ID = b.Period_ID
WHERE b.Amount > 0
group by farm_id
) t on t.max_per = a.order and t.farm_id = b.farm_id

关于mysql - 返回带有连接数据的 MAX 选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54096423/

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