我想在我的数据库中列出所有对话对。我在表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,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
答案 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);