繁体   English   中英

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

[英]How to group by two columns in Database?

我想在数据库中列出所有对话对。 我将表message存储在有关消息信息的存储位置。
我也尝试过此方法,但对我不起作用,因为指定的唯一选择列是链接
防爆。 $_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-1它应该是2-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

这是你想要的吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM