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
展开
 我来答
0808xyj
2014-11-23 · TA获得超过1891个赞
知道大有可为答主
回答量:1237
采纳率:100%
帮助的人:1083万
展开全部
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 为表名

 查询结果:

百度网友2dca20d
2014-11-23 · TA获得超过4036个赞
知道大有可为答主
回答量:2638
采纳率:77%
帮助的人:1041万
展开全部
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)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7558ae7
2014-11-23 · TA获得超过5797个赞
知道小有建树答主
回答量:1730
采纳率:50%
帮助的人:1706万
展开全部
试试,
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式