gpt4 book ai didi

sqlite - 从联接或组中查找第一行

转载 作者:行者123 更新时间:2023-12-03 17:35:50 26 4
gpt4 key购买 nike

我有一个订单表,存储订单元包括他们的日期,示例数据如下所示

date      |order-id
2010-12-16|106
2010-12-18|112
2009-03-05|115
2009-03-05|122

现在我需要创建一个文件夹来对同一个月的所有订单进行分组,并选择当月的第一个订单作为展示,但它似乎总是选择我下面查询中的最后一行

SELECT orders.id, order.date from orders
GROUP BY strftime('%Y-%m', orders.date)

它返回每个月的最后一行

2010-12-18|112
2009-03-05|122

所以我希望它回来

2010-12-16|106   
2009-03-05|115

(106:月初)
(115:与另一个相同的日期,但如果我对该月进行排序查询,这将匹配第一个)

我尝试了 JOIN 查询,如果我在同一天没有多个订单,它会工作,但在 2009-03 的情况下,它仍然返回最后一行,而不是第一行...

SELECT o.id, o.date
FROM orders o
JOIN
(SELECT MIN(date) as first_date FROM orders
GROUP BY strftime('%Y-%m', orders.date)
) as sorted_orders
ON o.creation_date=sorted_order.first_date
GROUP BY strftime('%Y-%m', orders.date)

还有什么我可以尝试的吗?

最佳答案

您的第二个查询不起作用,因为您实际上并未从 sorted_orders 子查询中选择任何列。

无论如何,如果您有 SQLite 3.7.11 或更高版本,GROUP BY 查询中的记录保证来自与 MIN 或匹配的组中的记录该组的 MAX:

SELECT id, MIN(date)
FROM orders
GROUP BY strftime('%Y-%m', date)

关于sqlite - 从联接或组中查找第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14802507/

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