gpt4 book ai didi

mysql - 一起使用 GROUP BY 和 ORDER BY 来检索最新消息

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

我正在制作一个消息系统,我需要按发件人对消息进行分组并按降序排列,以便最新的消息始终位于最前面。

查询

SELECT 
messages.message_id,
messages.message_from,
messages.message_to,
messages.message_content,
messages.message_seen,
messages.message_datetime,
messages.message_status,
profiles.profile_id,
profiles.profile_photo,
profiles.profile_username,
profiles.profile_name
FROM
messages
INNER JOIN
PROFILES
WHERE
profiles.profile_id = messages.message_from
GROUP BY
messages.message_from
ORDER BY
messages.message_id DESC

这就是上面的查询显示的内容。

enter image description here

这是数据库结构的样子 enter image description here

如您所见,message_id 是按降序排列的,但它不是最新的 id。

问题:

如何同时使用 Group By 和 Order By 来显示来自上面数据库查询的数据库的最新消息,我错过了什么?

最佳答案

这就是你可以这样做的方法如下,我没有选择所有你可以添加选择列表中需要的字段的字段

select 
m.message_id,
m.message_from,
m.message_to,
p.profile_name
from messages m
join profiles p on p.profile_id = m.message_from
left join messages m1
on m1.message_from = m.message_from
and m.message_id < m1.message_id
where
m1.message_id is null
order by m.message_id desc

另一种方法是

select 
m.message_id,
m.message_from,
m.message_to,
p.profile_name
from messages m
join profiles p on p.profile_id = m.message_from
where not exists
(
select 1 from messages m1
where
m1.message_from = m.message_from
and m.message_id < m1.message_id
)
order by m.message_id desc

demo

关于mysql - 一起使用 GROUP BY 和 ORDER BY 来检索最新消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27075451/

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