select talkAboutUserId,content,id from 聊天表 where recvUserId = 1 or sendUserID = 1order by id desc
sELECT * from ttq a where not exists(select 1 from ttq where sendUserID=a.recvUserID and a.id<id) order by id desc
原表可没有talkAboutUserId的字段
select if(recvUserId=1, sendUserId, recvUserId) talkAboutUserId,content,id from 聊天表 where recvUserId = 1 or sendUserID = 1 order by id desc
sELECT *,if(sendUserID=1,recvUserID,sendUserID) as talkAboutUserID from ttq a where not exists(select 1 from ttq where sendUserID=a.recvUserID and a.id<id) and (recvUserID=1 or sendUserID=1) order by id desc
数据要准备好 sELECT *,iif(sendUserID=1,recvUserID,sendUserID) as talkAboutUserID from ttq a where (not exists(select 1 from ttq where sendUserID=a.recvUserID and a.id<id or sendUserID=a.sendUserID and a.recvUserID=recvUserID and a.id<id )) and (recvUserID=1 or sendUserID=1) order by id desc
sELECT * from ttq a where not exists(select 1 from ttq where sendUserID=a.recvUserID and a.id<id)
order by id desc
and (recvUserID=1 or sendUserID=1)
order by id desc
就类似微信,1是自己, 2,3,4是你的好友, 查出和他们最近的一条聊天信息,不管这条信息是你发送的,还是对方发送的;
你的数据?用
id(自增), sendUserID, recvUserID, content
1, 1, 2, '2号你好'
2, 1, 3, '3号你好'
3, 1, 4, '4号你好'
4, 4, 1, '我是4号,1号你好烦'
5, 2, 1, '我是2号,1号你好烦'测试,结果正确
就类似微信,1是自己, 2,3,4是你的好友, 查出和他们最近的一条聊天信息,不管这条信息是你发送的,还是对方发送的;
你的数据?用
id(自增), sendUserID, recvUserID, content
1, 1, 2, '2号你好'
2, 1, 3, '3号你好'
3, 1, 4, '4号你好'
4, 4, 1, '我是4号,1号你好烦'
5, 2, 1, '我是2号,1号你好烦'测试,结果正确不行, 查出5记录了,1号只和2,,3,4说过话,应该查出3条才对;
就类似微信,1是自己, 2,3,4是你的好友, 查出和他们最近的一条聊天信息,不管这条信息是你发送的,还是对方发送的;
你的数据?用
id(自增), sendUserID, recvUserID, content
1, 1, 2, '2号你好'
2, 1, 3, '3号你好'
3, 1, 4, '4号你好'
4, 4, 1, '我是4号,1号你好烦'
5, 2, 1, '我是2号,1号你好烦'测试,结果正确
我测试了一下, 结果不对啊, 相同的人会出现多条记录; 就4个人(1,2,3,4号),1号是自己, 肯定只能出现3条呀;
我用的测试数据是
1, 1, 2, '2号你好'
2, 1, 3, '3号你好'
3, 1, 4, '4号你好'
4, 4, 1, '我是4号,1号你好烦'
5, 2, 1, '我是2号,1号你好烦'
6, 2, 1,‘我是2号,再次向1号问好’
sELECT *,iif(sendUserID=1,recvUserID,sendUserID) as talkAboutUserID from ttq a where
(not exists(select 1 from ttq where sendUserID=a.recvUserID and a.id<id
or
sendUserID=a.sendUserID and a.recvUserID=recvUserID and a.id<id
))
and
(recvUserID=1 or sendUserID=1)
order by id desc