sql语句 聊天记录,取用户最新一条

表A 当前用户为1,下表为用户1 和其他人的聊天记录
[sendid] [ToID] [sendtime] Message
1 2 12:30 内容1
2 1 12:31 内容2
3 1 12:33 内容3
3 1 12:34 内容4
1 4 12:41 内容5
请取出用户1和每个人聊天记录的最新一条数据,结果如下
[sendid] [ToID] [sendtime] Message
2 1 12:31 内容2
3 1 12:34 内容4
1 4 12:41 内容5

create table t_df(sendid int,ToID int,sendtime varchar(12),Message varchar(100));
go
insert into t_df values( 1,2,'12:30','内容1');
insert into t_df values( 2,1,'12:31','内容2');
insert into t_df values( 3,1,'12:33','内容3');
insert into t_df values( 3,1,'12:34','内容4');
insert into t_df values( 1,4,'12:41','内容5');
go
select * from t_df 
where sendid in(  select sendid from t_df where sendid = 1 or ToID = 1 group by sendid) 
and sendtime in (select max(sendtime) from t_df where sendid = 1 or ToID = 1 group by sendid)order by sendtime

注意:t_df 为表名

 查询结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-23
select *
from 表A W
where Sendtime=(select MAX(Sendtime) from 表A
where sendid=W.sendid and ToID=W.ToID or sendid=w.ToID and ToID=W.sendid)
第2个回答  2014-11-23
试试,
select * from (select row_number()over(partition by sendid,ToID order by sendid,ToID,sendtime desc) as id,* from 表名 where sendid=1 or ToID=1 ) as temp where id=1
相似回答