SQL 用中Max函数取最新数据为何总是出现多条相同id,不同时间的记录?
比如:我想查找每个sid的最新一条数据,我使用如下语句:selectsid,sdata,stimefromhisdatawherestimein(selectmax(st...
比如:我想查找每个sid的最新一条数据,我使用如下语句:
select sid,sdata,stime from hisdata where stime in (select max(stime) from hisdata group by sid )
但是返回结果中,总是有的sid 有两条,或者两条以上数据,我只想要最新一条的,该怎么改正? 展开
select sid,sdata,stime from hisdata where stime in (select max(stime) from hisdata group by sid )
但是返回结果中,总是有的sid 有两条,或者两条以上数据,我只想要最新一条的,该怎么改正? 展开
5个回答
展开全部
方法很多
1.按你的写法 这么改
select sid,sdata,stime from hisdata a
where stime in (select max(stime) from hisdata where a.sid=sid);
2.用 Not exists
select sid,sdata,stime from hisdata a
where not exists(select * from hisdata where a.sid=sid and a.stime<stime)
1.按你的写法 这么改
select sid,sdata,stime from hisdata a
where stime in (select max(stime) from hisdata where a.sid=sid);
2.用 Not exists
select sid,sdata,stime from hisdata a
where not exists(select * from hisdata where a.sid=sid and a.stime<stime)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你group by sid
就是按sid分组取每组里面stime最大的sid
如果只想一条数据
就不加group by
就是按sid分组取每组里面stime最大的sid
如果只想一条数据
就不加group by
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select max(stime) from hisdata group by sid )
你加个distinct 试试
你加个distinct 试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select sid,sdata,stime from hisdata where stime in (select max(stime) from hisdata)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
stime 不是唯一
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询