mysql分页查询当前表中默认前10条
select * from user limit 0,10
这句话的意思是说从表的第一行,也就是相当于java中list的0号位置,数到第9号位置,总共10条记录
select * from user limit 10,10
意思是从第10号位置,向后继续数10条,此时应该是19号位置,依次类推传递n页应该这么写
select * from user limit (n-1)*10,10
其实就是第一页我从0开始,往后查询10条,接着第二页我从10号位置再查10条;
oracle中查询分页查询当前表按照id倒叙取前10条
oracle分页查询与mysql有几点差异,mysql是先排序在分页,而oracle一般是按照默认顺序,其实也不是,有点复杂,因为oracle的分页是嵌套子查询,所以他的排序取决于子查询的排序方式。当然你不排序也就没必要嵌套子查询了
SELECT
rownum,
t1.*
FROM
( SELECT t.* FROM C_USER t ORDER BY id DESC ) t1
WHERE rownum<=10
子查询根据id倒叙排序,当做子表t1,然后使用rownum的oracle伪列给字表t1从上到下编号,然后取前到编号为10的这几行,由于rownum从1开始,所以<10实际只有9条,<=10才是根据id倒叙的前10条记录,而且rownum只能取< ,<=,反之取不到值。
oracle按照表中默认顺序取表中任意页内容,分页大小为10
SELECT * from (SELECT rownum as rn, t.* from c_user t ) WHERE rn > (n-1)*10 and rn <= n*10;