【发布时间】:2016-09-06 06:55:08
【问题描述】:
我已经为 Single Group By 访问了 MySQL order by before group by,它工作正常。我有 2 个按列分组的问题。
我有一个名为“消息”的下表。消息是用户帖子的集合
id | posts_id | from_user_id | to_user_id | message_description | created_at
-----------------------------------------------------------------------------
1 1 1 2 test1 2016-09-06 10:00:00
2 1 1 2 test2 2016-09-06 11:00:00
3 1 4 2 test3 2016-09-06 09:00:00
4 1 4 2 test4 2016-09-06 15:00:00
5 2 1 2 test1 2016-09-06 10:00:00
6 2 1 2 test2 2016-09-06 11:00:00
7 2 4 2 test3 2016-09-06 09:00:00
8 2 4 2 test4 2016-09-06 15:00:00
查询的结果输出应该是
id | posts_id | from_user_id | to_user_id | message_description | created_at
-----------------------------------------------------------------------------
2 1 1 2 test2 2016-09-06 11:00:00
4 1 4 2 test4 2016-09-06 15:00:00
6 2 1 2 test2 2016-09-06 11:00:00
8 2 4 2 test4 2016-09-06 15:00:00
我正在尝试检索帖子和用户的最新消息。
我在下面给出了尝试,但它没有以正确的顺序给出结果。
SELECT *
FROM messages
WHERE to_user_id = '2'
GROUP BY posts_id DESC,
from_user_id
ORDER BY id DESC
【问题讨论】:
-
@Strawberry 我已经访问了那个帖子。但它仅适用于单个分组,我必须以这种方式使用 2 个分组列无法得到答案
-
嗯。我认为这根本不是一个 group by/order by 问题,因为要求似乎是获取每个 from_user_id 的最后一个条目。试试这个 SELECT t1.* FROM messages t1 WHERE t1.id = (select max(id) from messages t2 where t2.posts_id = t1.posts_id and t2.from_user_id = t1.from_user_id)
-
您有 3 个用户,但您似乎只想返回与其中一个用户(用户 2)相关的消息
-
非常感谢@P.Salmon 这是我正在寻找的答案。解决了:)
-
@Strawberry 还是重复的??
标签: mysql group-by sql-order-by