Sybase使用TOP,查询出指定排名范围的记录

ASE 15.0 仅支持使用TOP来限定记录的条数,功能与MySQLLIMIT类似。

示例

从雇员表(emp)中取出雇员号排在前5的五名雇员记录:

select top 5 empno, ename 
from emp order by empno

如果要查询雇员号排在第6到第10之间的名雇员记录
尝试查询方法1

select top 5 empno, ename
from (select top 10 empno, ename
		from emp 
		order by empno desc)
order by empno

使用该方法1会报告如下错误:

在派生表中不允许使用一条OREDER BY子句。


ASE在这里并不支持在派生表中使用OREDER BY子句,一种可替代的方法是借助于临时表

  1. 将记录排序放于临时表,并生成一个主键。
  2. 从临时表里取id6105条记录。
1>  select top 10 empno, ename, id=identity(10) 
	into #tmp_tb 
	from emp 
	order by empno
2>  go
1>  select empno, ename
	from #tmp_tb 
	where id between 6 and 10
2>  go

在生成临时表的过程中加入TOP 10的限定,是为了减少生成记录的条数,提高临时表的生成效率。
这也是用于ASE数据库记录分页的一个基本方法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值