sql语句 聊天记录,取用户最新一条
表A当前用户为1,下表为用户1和其他人的聊天记录[sendid][ToID][sendtime]Message1212:30内容12112:31内容23112:33内容3...
表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 展开
[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 展开
3个回答
展开全部
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 为表名
查询结果:
展开全部
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)
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)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试试,
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询