这个标题很糟糕,但却无法想到更好的标题。这是特定于Twitter的,但可以应用于您进行私人谈话的任何类似应用程序。
我想显示用户可能拥有的所有直接消息。来自/到特定用户的所有消息应该组合在一起。
这是一个SQL Fiddle示例。
在此示例中,我收到了来自两个用户的消息,并回复了一个(输入/输出类型)。第一个查询只是按日期降序排序。订单是3 2 1,但我真正想要的是3 1 2因为3它是最新的,1与3相关。
第二个查询获取正确的顺序,但使用GROUP_CONCAT。这使得查询非常混乱,我宁愿在每一行中都有一条消息,所以我不必在PHP中拆分它们。
添加了第三个查询,因为我还不确定是否要订购每个会话ASC或DESC。这个正确地执行GROUP_CONCAT ASC,但是因为来自user2的消息比来自user1的第一条消息更新,所以这两行是相反的。
希望这是有道理的。我想要实现的两个命令是3 1 2和1 3 2,每个消息作为自己的行,以及两个不同的查询。谢谢!
答案 0 :(得分:0)
你在找这个吗?
SELECT *
FROM test
ORDER BY "user", date DESC;
编辑:
您希望在最近的消息发布之前订购用户。这需要类似join
:
select t.*
from test t join
(select user, max(date) as maxdate
from test
group by user
) tu
on t.user = tu.user
order by tu.maxdate desc, user, date desc;