gpt4 book ai didi

mysql - sql 获取具有最大日期和相对 id 记录的行

转载 作者:可可西里 更新时间:2023-11-01 08:06:21 24 4
gpt4 key购买 nike

我尝试做一个简单的查询,花了几个小时却一无所获....
我只需要获取 MAX 日期,所有都是相应的字段。

我在解释:我有一个包含以下字段的表:BasketIDOrderStatusTypeIDStatusDate
我尝试只获取一个包含 OrderStatusTypeID 值和最后一个 StatusDate 的记录。

这是数据

BasketID    OrderStatusTypeID   date
1111 13 2013-04-01 11:38:31
1111 26 2013-04-04 17:44:17
1111 39 2013-04-02 12:35:07
1111 40 2013-04-08 12:52:55

这是我的查询:

SELECT BasketID, OrderStatusTypeID, max(StatusDate) date
FROM st
where BasketID=1111
group by BasketID

这是我需要的结果

BasketID    OrderStatusTypeID   date
63558 40 2013-04-08 12:52:55

出于某种原因,我只得到 OrderStatusTypeID = 13 而不是 40!(StatusDate 的最大值,而不是 OrderStatusTypeID 的最大值)。
为什么???

BasketID    OrderStatusTypeID   date
63558 13 2013-04-08 12:52:55

感谢您的快速回复!

最佳答案

我假设您使用的是 MySQL,因为即使您没有在 GROUP BY 子句中指定所有非聚合列,您也可以运行查询。

有很多方法可以解决问题,但我习惯于这样做。该查询使用一个子查询,该子查询分别为每个 BasketID 获取最新的 date。由于子查询仅返回两列,您需要将其重新连接到表本身以获取其他列,前提是它匹配两列:BasketIDDate

SELECT  a.*
FROM st a
INNER JOIN
(
SELECT BasketID, MAX(Date) max_date
FROM st
GROUP BY BasketID
) b ON a.BasketID = b.BasketID AND
a.Date = b.max_date

即使 GROUP BY 子句中未指定非聚合列,您的查询也已成功执行且未抛出异常,因为它在 MySQL 中是允许的。参见 MySQL Extensions to GROUP BY .

关于mysql - sql 获取具有最大日期和相对 id 记录的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15902900/

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