问个关于sqlserver中select...order by..的问题

假设一张表中有一个时间字段time我希望select的时候按时间排序也就是orderbytime但是我不想选择这样排序出来的第一条,想选择第五条应该怎么写?... 假设一张表中有一个时间字段time
我希望select的时候按时间排序也就是order by time
但是我不想选择这样排序出来的第一条,想选择第五条
应该怎么写?
展开
 我来答
渣驶9
2011-03-21
知道答主
回答量:14
采纳率:0%
帮助的人:6.3万
展开全部

select   identity(int,1,1)  time(创建递增列), 其他列1,其他列2 into   #t (创建临时表t,#类似关键字)  from   表名 order by time desc

select   *   from   #t where time = 5

原理:将结果集重新排列,time列存储的就是排序后的列号,所以需要第五个,只要在where子句中写time = 5就可以了。

给分呀嘿嘿

为了分,给你贴个图

select   identity(int,1,1) as(得有as) rownum , branchname,fatherid into   #tmp   from   News_Branch order by id desc

select   *   from   #tmp where rownum = 5

带我信乐
2011-03-24 · TA获得超过1353个赞
知道小有建树答主
回答量:680
采纳率:0%
帮助的人:710万
展开全部
row_number 05版本+才有
TOP的方式
SELECT TOP 1 *
FROM (
SELECT TOP 5 *
FROM 表
ORDER BY time ASC
)AS T
ORDER BY time DESC
希望对你有帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
putx926
2011-03-21 · TA获得超过787个赞
知道小有建树答主
回答量:129
采纳率:0%
帮助的人:156万
展开全部
有排名函数row_number:
select * from
(select *,row_number() over(order by time) orderId from tab) a
where orderId=5
你想选哪条,orderId等于那条就是了,也可以选择范围(用in,你懂的)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leonku
2011-03-22
知道答主
回答量:16
采纳率:0%
帮助的人:0
展开全部
我(sql_k)有两方法可供您参考:
1、建聚集索引(在time字段上,按升序排列,sql server默认在主键上建聚集索引,你把主键的聚集索引删掉,改为非聚集,然后在time上建聚集索引),之后写入下语句:
select top 1* from table where time not in(select top 4time from table )
2、不建索引的前提下:
select top 1* from table where time not in(select top 4time from table order by time)
说明:在实际项目中,以时间为条件来执行sql是很不好的一个习惯,很多时候,你想要的结果将不会得到,因为很多条记录的时间可能都是相同的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dark1018
2011-03-21
知道答主
回答量:23
采纳率:0%
帮助的人:0
展开全部
可以用rs.movefirst
然后rs.move5 可以移到第五条
如还有不明白的可加入我的群来讨论:
qq裙:1-2-1-3-2-2-0-2-8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SD阵风
2011-03-24 · TA获得超过114个赞
知道答主
回答量:180
采纳率:0%
帮助的人:77万
展开全部
用游标好像 可以吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式