sql查询语句,根据时间查询得到不重复的记录。

xxdd 发布于 2013/05/24 10:41
阅读 2K+
收藏 1

全部数据是这样的

只要每个TagID,最近时间的一条记录,这个表我只要这个

求指点,sql语句应该怎么写,谢谢。

加载中
0
3_14159265359
3_14159265359
select distinct TagID from table order by time desc
3_14159265359
3_14159265359
如果数据不多的话用子查询如何 select distinct TagID from(select TagID from table order by time)
xxdd
xxdd
sql server2005
3_14159265359
3_14159265359
你用的oracle吗?
xxdd
xxdd
报错。消息 145,级别 15,状态 1,第 1 行 如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中。
0
吉普车
select distinct TagID from table order by  TagID,time desc
xxdd
xxdd
消息 145,级别 15,状态 1,第 1 行 如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中。
0
五行缺钱的程序员
五行缺钱的程序员

如果只查询 TagID,time  :

SELECT TagID,MAX(CreatTime) AS CreatTime FROM en
GROUP BY TagID ORDER BY TagID,CreatTime
如果全部查询:

SELECT TagID,TagName,nValue,CreatTime FROM en
WHERE CreatTime 
in(SELECT MAX(CreatTime) FROM en GROUP BY TagID)

xxdd
xxdd
这样不行因为我的时间有重复的。
0
xxdd
xxdd
select s1.TagID,s1.TagName,s1.nValue,s1.CreatTime from en s1,
(select TagID,max(CreatTime) as CreatTime from en group by TagID) s2

where s1.TagID=s2.TagID and s1.CreatTime=s2.CreatTime

这样可以,谢谢大家帮我解决问题。

0
William
William
SELECT *
FROM #table m
JOIN ( SELECT tagID, createTime = MAX(createTime) FROM #table GROUP BY tagID ) t 
ON t.tagID = m.tagID AND t.createTime = m.createTime
ORDER BY m.tagID

0
斯诺登
斯诺登

表结构稍微整一下,

1、TagName不应该出现在这个表中

2、单独整一个Tag表,包含Tag,TagName

按照你的业务需求,我会在新整出来的Tag表里加个最新业务ID字段,Tag add NewId,每次插入表1时,更新表2NewID字段,这样查询Tag表的最新一条记录就简单了

返回顶部
顶部