首页 文章

与用户分组和订购对话消息

提问于
浏览
2

这个 Headers 很糟糕,但想不出更好的一个 . 这是特定于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,每个消息作为自己的行,以及两个不同的查询 . 谢谢!

1 回答

  • 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;
    

相关问题