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