gpt4 book ai didi

mysql - 按 SELECT 子查询的最后一行排序

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

我有 2 个表:“帖子”- 用于用户发布的帖子及其包含的所有信息。和“消息” - 其中包括每个帖子的消息。这些表格如下所示:

帖子:

--------------------------------------------------
| post_id | post_creator_id | post_information |
--------------------------------------------------

消息:

----------------------------------------------------------
| message_id | post_id | user_id | message_text |
----------------------------------------------------------

我想向用户 (user_id) 显示他所参与的所有聊天的列表,并按任何聊天中发送的最后一条消息对其进行排序。

所以有几件事要做:首先我需要按 messages 表中的 post_id 进行分组(这样就不会重复)并按 message_id 进行排序DESC,我尝试了子查询和连接,但都不起作用。这是我的子查询尝试的示例:

SELECT posts.post_information FROM posts WHERE posts.post_id in (SELECT 
messages.post_id FROM messages ORDER BY message_id DESC)

无法弄清楚如何使查询仅显示不同的行(没有重复的 post_id)以及 join 是否是更好的选择?

最佳答案

对查询进行简单的更改,我们可以将 INNER JOINmessages 表结合使用,将 ORDER BYmessage_id 结合使用而不是使用 suqbyery (似乎您想按 message_id降序 顺序对输出数据进行排序。

SELECT posts.post_information 
FROM posts
INNER JOIN (SELECT post_id, max(message_id) mid
FROM messages
GROUP BY post_id) mes ON mes.post_id = posts.post_id
ORDER BY mes.mid DESC

关于mysql - 按 SELECT 子查询的最后一行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50060992/

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