gpt4 book ai didi

sql - SELECT set of most recent id, amount FROM table,其中id出现多次

转载 作者:行者123 更新时间:2023-11-29 05:45:33 25 4
gpt4 key购买 nike

我有一张表记录了给定日期给定服务传输的数据量。每天为给定服务输入一条记录。

我希望能够检索一组服务的最新数量

示例数据集:

serviceId | amount | date
-------------------------------
1 | 8 | 2010-04-12
2 | 11 | 2010-04-12
2 | 14 | 2010-04-11
3 | 9 | 2010-04-11
1 | 6 | 2010-04-10
2 | 5 | 2010-04-10
3 | 22 | 2010-04-10
4 | 17 | 2010-04-19

期望的响应(服务 ID 1、2、3):

serviceId | amount | date
-------------------------------
1 | 8 | 2010-04-12
2 | 11 | 2010-04-12
3 | 9 | 2010-04-11

期望的响应(服务 ID 2、4):

serviceId | amount | date
-------------------------------
2 | 11 | 2010-04-12
4 | 17 | 2010-04-19

这检索等效于为每个 serviceId 运行以下一次:

SELECT serviceId, amount, date
FROM table
WHERE serviceId = <given serviceId>
ORDER BY date DESC
LIMIT 0,1

我了解如何在 X 查询中检索我想要的数据。我很想知道如何使用单个查询或至少少于 X 个查询来检索相同的数据。

我很想知道什么是最有效的方法。该表当前包含 28809 条记录。

我明白还有其他问题涉及选择最新的记录集。我已经检查了三个这样的问题,但无法将解决方案应用于我的问题。

最佳答案

select m.*
from (
select serviceId, max(date) as MaxDate
from MyTable
group by serviceId
) mm
inner join MyTable m on mm.serviceId = m.serviceId and mm.MaxDate = m.date

如果你想通过serviceId过滤,你可以这样做:

select m.*
from (
select serviceId, max(date) as MaxDate
from MyTable
where serviceId in (1, 2, 3)
group by serviceId
) mm
inner join MyTable m on mm.serviceId = m.serviceId and mm.MaxDate = m.date

关于sql - SELECT set of most recent id, amount FROM table,其中id出现多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2625580/

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