如何在数据库中按两列分组?

时间:2014-07-24 00:39:00

标签: php mysql sql

我想在我的数据库中列出所有对话对。我在表message处有关于消息信息的商店。
我也尝试了这个但不适用于我Link因为只有不同的指定列。
例。当$_SESSION['userid'] = 1

表格消息

sender_id   sendto_id    created(datetime)
1           2
1           2
1           3
1           4
3           1
3           1
2           4
4           2

我的结果在1,33,1之间有声誉。

sender_id   sendto_id
1           2
1           3
1           4
3           1

我只是想这样,让它为每对选择最新的字段。 防爆。如果1-2(1)是最新版本,则1-2(2)2-12-1应为2-1;如果最新,则为1-2(2)

sender_id   sendto_id   created(datetime)
2           1           newest of pair 1-2 or 2-1
1           3           newest of pair 1-2 or 2-1
1           4           newest of pair 1-2 or 2-1

我的SQL在这里,请帮忙!谢谢。

select m.*,
       (select MAX(created)
          from message n
         where (n.senderid = m.sendtoid AND n.sendtoid = '$userid')
            OR (n.senderid = '$userid' AND n.sendtoid = m.sendtoid)) lastsend
  from message m
 where (m.senderid = '$userid' OR m.sendtoid = '$userid')
 group by m.senderid, m.sendtoid
 order by lastsend desc

1 个答案:

答案 0 :(得分:1)

这是你想要的吗?

select least(sender_id, sendto_id) as sender_id,
       greatest(sender_id, sendto_id) as sendto_id,
       min(created_datetime)
from message m
group by least(sender_id, sendto_id), greatest(sender_id, sendto_id);