注册 登录
编程论坛 SQL Server论坛

如何在结果集的基础上继续查询~~

honkerman 发布于 2006-10-27 20:22, 1082 次点击

RT,比如我查出一个字段的时间

select * from(select id,endtime from record) as tab
order by endtime desc --按从大到小排序,我希望知道排在最上面的那个人的ID
--该怎么写啊?

9 回复
#2
bygg2006-10-27 20:39
select top 1 id from record order by endtime desc
#3
honkerman2006-10-27 20:55

是先把这个表排好了,然后用这个表再查询一次,能行吗?不要一次就给个ID出来,怎么写呢?

#4
小水滴2006-10-28 10:52
select * from(select id,endtime from record order by endtime desc) as tab
#5
honkerman2006-10-28 10:58
MM,你那个我开始也试过的啊 ,可是报这个错误
服务器: 消息 1033,级别 15,状态 1,行 2
除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
#6
潇洒老乌龟2006-10-28 11:25
select * from record where endtime in (select min(endtime) as endtime from record)
#7
honkerman2006-10-28 11:39

谢谢你们了,还是有点问题啊,比如这个
begintime endtime
1 1 1 1899-12-30 18:07:48.000 1899-12-30 19:07:48.000 10
2 2 2 1899-12-30 19:07:48.000 1899-12-30 20:07:48.000 8
3 3 3 1899-12-30 18:07:48.000 1899-12-30 19:40:48.000 7
4 4 4 1899-12-30 18:09:48.000 1899-12-30 20:59:48.000 13
5 5 5 1899-12-30 22:07:48.000 1899-12-30 23:44:48.000 20
应该把ID是5的那个弄出来,运行了版主的语句只能出来一个ID为1的啊~~

#8
小水滴2006-10-28 12:40

把 min 改成 max

select * from record where endtime in (select max(endtime) as endtime from record)

#9
honkerman2006-10-28 13:29
呵呵,出来了,谢谢啦~~
#10
棉花糖ONE2006-11-05 12:20

潇洒老乌龟,是不是用min函数的效率比用top高啊

1