无双Rama 发表于 2013-1-30 00:11:51

sybase iq中如何分页

SQL Server
      SELECT *
      FROM   ( SELECT Top N *
                        FROM   (SELECT Top (M + N - 1) * FROM 表名称 Order by 主键 desc) t1 ) t2
       Order by 主键 asc

Oralce数据库      
         SELECT *
         FROM (SELECT ROWNUM r,t1.* From 表名称 t1 where rownum < M + N) t2
         where t2.r >= M

My sql数据库
         SELECT * FROM 表名称 LIMIT M,N

在Sybase IQ中没有以上的的函数,不能按照以上的方法进行分页。只能用rank() over(order by 主键)alia,这种方式

例如:
select * from (
select RANK() OVER ( ORDER BY $columnNmae$ $sortType$,id)num, * from table_name t
where 1=1 and....
)as a
where a.num>= $begin$ and a.num< $end$

其中$columnNmae$ $sortType$,是你要排序的列和排序的方式,一定要放在主键前面,这样它才会先排序再按主键生成num号(类似oracle中的rownum),and后面接你的查询条件,begin和end分别对应 上面的M、N
页: [1]
查看完整版本: sybase iq中如何分页