`

数据库分页

 
阅读更多
1,MySql:
    MySql比较简单,提供了limit函数
    一般指需要直接写到sql语句后面就行。
    1,limit子句可以用来限制select语句返回过来的数据数量,它有一个或两个参数,如果给出两个参数,第一个参数指定返回的第一行在所有数据中的位置,从0开始(Not 1),第二个参数指定最多返回行数。
    No1:select * from table where ... limit 10;返回前10行
    No2:select * from table where... limit 0,10;返回前10行
    No3: select * from table where ...limit 10,20;返回第10-20行数据
 
2,SQL Server
    1,方案1(NOT IN和SELECT TOP)效率次之:
        SELECT TOP 页大小 *
        FROM tableName
        WHERE ( id NOT IN
                (
                    SELECT TOP (页大小*(页数-1)) id
                    FROM tableName
                    ORDER BY id
                ) 
        )
        ORDER BY id
    2,方案2 (id大于多少和SELECT TOP分页):
    3,方案3 (SQL游标):
    4,方案4 (ROW_NUMBER() OVER):
        SELECT * FROM (
            SELECT *,row_NUMBER() OVER(ORDER BY id) AS rowNum FROM USER1 AS a
            WHERE name LIKE '%zhan%'
        ) AS b
        WHERE rowNum BETWEEN pageSize*(pageIndex-1) AND pageSize*pageIndex
        ORDER BY id DESC
 
3,Oracle
   Oracle中没有limit关键字,但是有rownum字段
rownum是一个伪例,是oracle系统自动为查询返回结果的每行分配的编号,第一行为1,第二行为2,以此类推。 
    eg:
    select * from (select e.* , rownum r from (select * from emp order by sal desc) e )e1 
    where e1.r > 21 and e1.r <= 40
    
 
 
 
 
 
 
 
 
 
 
 
    
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics