gpt4 book ai didi

mysql - SQL:最大聚合和按查询分组

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

我的 SQL 查询遇到问题。我有以下订单

 id
order_number_for_user
user_id
date

我想选择用户在特定日期 (2015-01-19) 的最新订单。这是一些示例数据

 id| order_number_for_user | user_id |    created      
-------+---------------+---------+---------------
1 | 1 | 10 | 2015-01-19
2 | 2 | 10 | 2015-01-19
3 | 1 | 20 | 2015-01-19
4 | 1 | 30 | 2015-01-19
5 | 1 | 40 | 2015-01-19
6 | 2 | 40 | 2015-02-30

正确的输出是以下行 ID 的 2,3,4,5

这是我构建的损坏的查询

SELECT id FROM orders WHERE order_number_for_user = 
(SELECT max(order_number_for_user) FROM orders as orders2
WHERE orders.user_id=orders2.user_id
AND date(created) = date('2015-01-19'))

此查询选择的行是1,2,3,4,5。不应选择第 1 行,因为它不是用户 10 在指定日期的最大订单数。

有人可以告诉我我的查询为什么不正确吗?

最佳答案

您可能想要这个:

SELECT * 
FROM orders
WHERE id IN (
SELECT MAX(id)
FROM orders
WHERE DATE(created) = '2015-01-19'
GROUP BY user_id
) AS max_order_ids

内部/子查询获取该特定日期每个用户订单的最大 ID。然后外部查询获取这些 ID 的其余订单信息。

您的查询没有进行任何分组,因此 MAX() 聚合的结果不稳定。

关于mysql - SQL:最大聚合和按查询分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28285485/

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