[英]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,3
和3,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.