SQL 查询某个字段相同值的多条数据中,时间最近的那条记录

例如: 序号 代码 …… 日期
1 A1001 …… 03/09/13
2 A1002 …… 03/09/13
3 A1001 …… 03/26/13
需要的结果:查询代码=A1001的多条记录中,时间最近的那条记录

select * from tb a 
where not exists
(select 1 from tb where id=a.id and time>a.time)

追问

这条语句是查询所有id相同时间最近的记录吗?

追答

是的,我觉得这个比你选的答案有用呵呵~

追问

你们两个的回答对我都很有用,我都用上了,不过woaiyangguihua 的回答符合我当时的提问,可惜百度不允许同时选多个满意答案,还是非常感谢你的!还有个小问题想请教你,我想修改表中id=A1001时间最近的记录的Sta的值,该怎么写,老是提示我语法错误

追答

呵呵,我说着玩儿的,你选的答案是最符合要求的

update a set a.sta='new' from tb a 
where id='A1001'
and not exists (select 1 from tb where id=a.id and time>a.time)

追问

问题已经解决,我用的sta='new',而不是a.sta='new',现在明白了,非常感谢!

追答

a只是表别名,多表联合操作时用于区别同名表或列的,单独一个表操作是不用加的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-01
首先楼上那段只是针对SQLSERVER的,换做其他数据库你试试,保证错!
第2个回答  2013-07-01
select top 1 * from Table
where 代码='A1001'
order by 日期 DESC本回答被提问者采纳