Mysql 获取对话的第一条消息
请帮我检索每个对话的第一条消息 表:信息Mysql 获取对话的第一条消息,mysql,sql,greatest-n-per-group,Mysql,Sql,Greatest N Per Group,请帮我检索每个对话的第一条消息 表:信息 id | sender_id | recipient_id | content | Created_at 1 | 100 | 101 | AB | 2017-03-20 22:37:30 2 | 101 | 100 | Hello | 2017-03-21 20:29:10 3 | 101 | 100 | XYZ
id | sender_id | recipient_id | content | Created_at
1 | 100 | 101 | AB | 2017-03-20 22:37:30
2 | 101 | 100 | Hello | 2017-03-21 20:29:10
3 | 101 | 100 | XYZ | 2017-03-21 22:02:00
4 | 200 | 100 | xxt | 2017-03-21 23:01:01
5 | 200 | 100 | Hi there | 2017-03-22 10:10:10
6 | 102 | 500 | Can you meet?| 2017-03-22 10:15:32
7 | 600 | 700 | Yes | 2017-03-22 10:20:30
8 | 600 | 700 | Hello world | 2017-03-23 01:00:00
9 | 700 | 600 | Hi | 2017-03-23 08:10:10
10 | 800 | 900 | hello | 2017-03-26 22:00:00
预期结果:
id | sender_id | recipient_id | content | Created_at
1 | 100 | 101 | AB | 2017-03-20 22:37:30
4 | 200 | 100 | xxt | 2017-03-21 23:01:01
6 | 102 | 500 | Can you meet?| 2017-03-22 10:15:32
7 | 600 | 700 | Yes | 2017-03-22 10:20:30
10 | 800 | 900 | hello | 2017-03-26 22:00:00
提前谢谢。尝试使用带限制的相关子查询查找给定两个人之间第一次对话的id
select *
from your_table t
where id = (
select id
from your_table t2
where least(t.sender_id, t.recipient_id) = least(t2.sender_id, t2.recipient_id)
and greatest(t.sender_id, t.recipient_id) = greatest(t2.sender_id, t2.recipient_id)
order by id limit 1
);