gpt4 book ai didi

MySQL Group By 单个结果按时间排序

转载 作者:行者123 更新时间:2023-11-30 00:46:31 26 4
gpt4 key购买 nike

我正在尝试从已向我发送消息的消息表中获取用户,但每个发件人只需要一个结果,即 creation 列的最大值,即消息创建时间

SELECT messages.from, account_images.profile, bio.user_full_name
FROM messages
INNER JOIN account_images ON account_images.uuid=messages.from
INNER JOIN bio ON bio.uuid=messages.from
WHERE messages.to='me'
GROUP BY messages.from
ORDER BY messages.creation DESC

最近创建消息的用户必须位于顶部,但使用此代码不会位于顶部。我提到php mysql Group By to get latest record, not first record但没有得到任何东西有什么帮助吗?

最佳答案

您可以将当前查询编写为...

SELECT DISTINCT messages.from, account_images.profile, bio.user_full_name
FROM messages
INNER JOIN account_images ON account_images.uuid=messages.from
INNER JOIN bio ON bio.uuid=messages.from
WHERE messages.to='me'

这会稍微更有效 - 但正如您在当前查询中注意到的那样,它不会按最新消息排序。

这是根据您的要求排序的:

SELECT messages.from, account_images.profile, bio.user_full_name
FROM messages
INNER JOIN account_images ON account_images.uuid=messages.from
INNER JOIN bio ON bio.uuid=messages.from
WHERE messages.to='me'
GROUP BY messages.from
ORDER BY MAX(messages.creation) DESC;

使用 DISTINCT 而不是聚合可以获得您想要的结果,但它既不高效也不优雅。

关于MySQL Group By 单个结果按时间排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21316726/

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