首页 新闻 搜索 专区 学院

求一条单表过滤查询最新记录的SQL语句

0
悬赏园豆:5 [待解决问题]

表结构如下:

UserID(用户ID)     TM(时间)     Item(参数值) 三个字段,类型分别为字符串、日期时间、数值型,其中UserID和TM联合为表的主键,每个用户定时5分钟添加一条记录到该数据表中,如下:

用户1         2013-11-25 00:00:00       100.0

用户2         2013-11-25 00:00:00       100.0

用户1         2013-11-25 00:05:00       100.0

用户2         2013-11-25 00:05:00       100.0

用户3         2013-11-25 00:35:00       100.0

 

现在求一条SQL语句,要求查出每个用户按时间来的最新的一条记录,谢谢大家。

摩根鱼的主页 摩根鱼 | 初学一级 | 园豆:19
提问于:2013-11-26 10:14
< >
分享
所有回答(6)
0

Group ,Orderby ,Top(1).你结合在一起组织一下

平常心队长 | 园豆:1113 (小虾三级) | 2013-11-26 10:26
0

select max(UserID) as UserID,max(TM) as TM,max(Item) as Item from 表名 group by UserID 

sam.c | 园豆:148 (初学一级) | 2013-11-26 10:30
0

select UserID, max(TM) as TM

from your_table

group by UserID

Albert Fei | 园豆:2102 (老鸟四级) | 2013-11-26 11:11
0

你的表设计的不科学.

没有与业务无关的  主键

select * from T1 where 
(  (cast(UserID as nvarchar)+cast(TM as nvarchar)) =
(select  (cast(UserID as nvarchar)+cast(TM as nvarchar)) from T1 group by UserID
  having TM=Max(TM)
)

 

【秦时明月】 | 园豆:803 (小虾三级) | 2013-11-26 13:04
0

select UserID as UserID,max(TM) as TM,max(Item) as Item from 表名 group by UserID

 

with t as (select UserID , max(TM) as TM from tbName group by UserID )
select *
from tbName d inner join t on d.UserID =t.UserID and d.TM =t.TM 

junjieok | 园豆:779 (小虾三级) | 2013-11-27 08:54

SELECT *
FROM (SELECT ROW_NUMBER() OVER(PARTITION BY USERID ORDER BY A.TM DESC) LEV,
A.*
FROM TAB A)
WHERE LEV = 1

 

这个sql也可以

支持(0) 反对(0) junjieok | 园豆:779 (小虾三级) | 2013-11-27 14:07
0

http://q.cnblogs.com/q/49292/

这是一个类似的例子,谨供参考。

邀月 | 园豆:25339 (高人七级) | 2014-01-06 11:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册