gpt4 book ai didi

mysql - 为什么 ORDER BY + MAX() 分组时返回最大值?

转载 作者:行者123 更新时间:2023-11-29 01:09:18 29 4
gpt4 key购买 nike

我有这部分查询:

GROUP BY trackid 
ORDER BY MAX(history.date) DESC

我看到,当我分组时,它返回每个组的最大日期行。为什么会有这种行为?订单应该适用于整行......而不是分组?!?!?

编辑(示例)

这是我的整个查询:

SELECT tracklist.value, history.date
FROM history JOIN tracklist ON history.trackid=tracklist.trackid
ORDER BY history.date DESC

结果是:

tracklist3  2011-04-27 15:40:36
tracklist2 2011-04-27 13:15:43
tracklist2 2011-04-02 00:30:02
tracklist2 2011-04-01 14:20:12
tracklist1 2011-03-02 14:13:58
tracklist1 2011-03-01 12:11:50

如您所见,所有行均按 history.date 正确排序。现在我想对它们进行分组,为每个组保留具有 MAX history.date 的行。所以输出应该是:

tracklist3  2011-04-27 15:40:36
tracklist2 2011-04-27 13:15:43
tracklist1 2011-03-02 14:13:58

我明白了:

GROUP BY trackid 
ORDER BY MAX(history.date) DESC

工作正常,但我真的不明白它为什么工作 :) Order by 是针对整行,而不是针对分组....

最佳答案

当您说 SELECT trackid, MAX(history.date) ... GROUP BY trackid ORDER BY MAX(history.date) DESC 时,您实际上是在说:“向我展示每个轨道列表中最最近的历史条目,请首先显示最近的历史条目是(总体)最新的轨道列表。”

ORDER BY 在分组之后 应用,(这就是它在 SQL 中的 GROUP BY 之后的原因)。

请注意,在您的示例中,您有 SELECT tracklist.value, history.date 而不是 SELECT tracklist.value, MAX(history.date)。这是错误的,不幸的是,MySQL 没有发出警告,但它自行决定选择一个随机 history.date

关于mysql - 为什么 ORDER BY + MAX() 分组时返回最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5820722/

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