gpt4 book ai didi

mysql - GROUP BY ORDER BY 帮助

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

以下代码有效,但我希望这些组按日期时间显示他们的最新查询,而不是第一个日期时间查询。我试过从 ASC/DESC 改变 ORDER BY,但这只是改变了所有组的顺序,而不是组内的数据。我需要组的所有内部数据和所有组都按最新日期时间排序。

$query="SELECT * FROM emails 
WHERE sentto='$sid'
GROUP BY sentto
ORDER BY datetime DESC LIMIT $eu, $limit ";

与其显示组并按第一个查询对它们排序:
Sam Richards 于 2011 年 1 月 22 日 的消息(这是一个群组)
John Smith 于 2011 年 1 月 5 日 的消息(这是一个群组)

我希望它显示组并按最新查询对它们进行排序:
John Smith 于 2011 年 4 月 19 日 的消息(这是一个群组)
来自 Sam Richards 的消息,于 2011 年 3 月 10 日(这是一个群组)

请帮忙。

最佳答案

我认为您的部分问题是您选择了带有分组查询的非聚合列。您应该明确希望它在聚合查询结果中返回哪些值。​​

SELECT sentto, MAX(datetime) AS datetime FROM emails
GROUP BY sentto
ORDER BY datetime desc LIMIT $eu, $limit;

我仍然不确定这是否能满足您的需求。听起来您想实际检索每封电子邮件的行,并且只使用 GROUP BY 最大值进行排序。为此,您可能需要执行上述查询,然后返回并为每个 sentto 执行第二次查询。我想不出在单个查询中立即执行此操作的方法。

SELECT * FROM emails
WHERE sentto=$sid
ORDER BY datetime DESC;

(对于第一个查询中返回的每个 sentto。)

关于mysql - GROUP BY ORDER BY 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5722089/

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