求个SQL语句

annywoody 2008-11-12 09:03:37
一个表中3个字段
id,value,time
1 12 2008-10-25
2 5 2008-11-02
3 4 2008-11-05
1 6 2008-11-02
3 8 2008-11-04

现在要查找每个id的最后一次写入的value,查询结果应该是

id value time
1 6 2008-11-02
2 5 2008-11-02
3 4 2008-11-05

SQL语句应该怎么写?
...全文
89 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
linhong835 2008-11-12
  • 打赏
  • 举报
回复
上面LZ7的答案是正确的,我运行结果没有问题,谢谢了,也让我学到了点知识。呵呵...下面是我的表和运行sql语句:

表结构:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tab_test]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tab_test]
GO

CREATE TABLE [dbo].[tab_test] (
[id] [int] NOT NULL ,
[value] [int] NOT NULL ,
[time] [datetime] NOT NULL
) ON [PRIMARY]
GO

运行的Sql语句:
select t1.*,t2.value from (SELECT id,max(time) as time FROM tab_test group by id) as t1,tab_test as t2 where t1.id=t2.id and t1.time = t2.time

表里面的数据都是用上面的原始数据。
shakaqrj 2008-11-12
  • 打赏
  • 举报
回复
恩?
我在access中试验都成功了啊
按理sqlserver应该更能通过

我想是不是你程序问题,而非sql问题吧
内存泄漏 2008-11-12
  • 打赏
  • 举报
回复
select t1.*,t2.value from (SELECT id,max(time) as time FROM test2 group by id) as t1,test2 as t2
where t1.id=t2.id and t1.time = t2.time
annywoody 2008-11-12
  • 打赏
  • 举报
回复
ls的语句试了,但一直提示对象名“select id, max(time) as mintime from t group by id”无效
shakaqrj 2008-11-12
  • 打赏
  • 举报
回复
SELECT t1.id, t1.value, t1.time
FROM t AS t1 INNER JOIN [select id, max(time) as mintime from t group by id]. AS t2 ON (t1.time=t2.mintime) AND (t1.id=t2.id);

试试看
annywoody 2008-11-12
  • 打赏
  • 举报
回复
SQL server 2000 数据库
shakaqrj 2008-11-12
  • 打赏
  • 举报
回复
得看是什么数据库了
有些容易些,有些复杂些
annywoody 2008-11-12
  • 打赏
  • 举报
回复
SQL server 2000

数据还是比较大的,“在VC程序中对记录集进行过滤”这个显然是不适应了
内存泄漏 2008-11-12
  • 打赏
  • 举报
回复
是什么数据库? 如果数据量不大的话,也可以考虑在VC程序中对记录集进行过滤。。
annywoody 2008-11-12
  • 打赏
  • 举报
回复
用了tabby的语句是正确的,ls的我也不知道是啥情况了

还是谢谢你了
shakaqrj 2008-11-12
  • 打赏
  • 举报
回复
恩?
我用顶楼的原始数据,查询结果没问题啊...

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧