sql查询语句分页查询语句怎么写

1. sql的分页语句怎么写 select *from studentwherestu_id in( select stu_id from( select ROW_NUMBER() over (order by stu_id desc) as Row, stu_id from student )students where students.Row>(@PageIndex-1)*@PageSize And students.Row<[email protected]*@PageSize) 其中变量@PageIndex、@PageSize是两个变量或者参数 。
2. 如何用sql语句 实现分页查询 方法1:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
FROM table1
WHERE id NOT IN
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
)
ORDER BY id
方法2:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
FROM table1
WHERE id >
(
SELECT ISNULL(MAX(id),0)
FROM
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
) A
)
ORDER BY id
方法3:
适用于 SQL Server 2005
SELECT TOP 页大小 *
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
) A
WHERE RowNumber >; 页大小*(页数-1)
3. sql的分页语句怎么写 select
*
from
student
where
stu_id in
(
select stu_id
from(
select
ROW_NUMBER() over (order by stu_id desc) as Row,
stu_id
from
student
)students
where
students.Row>(@PageIndex-1)*@PageSize
And students.Row
4. 如何用sql语句 实现分页查询 方法1:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
FROM table1
WHERE id NOT IN
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
)
ORDER BY id
方法2:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
FROM table1
WHERE id >
(
SELECT ISNULL(MAX(id),0)
FROM
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
) A
)
ORDER BY id
方法3:
适用于 SQL Server 2005
SELECT TOP 页大小 *
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
) A
WHERE RowNumber >页大小*(页数-1)
5. 用SQL写出分页查询 SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A --不排序 WHERE ROWNUM <= 40 ) WHERE RN >= 21; SELECT * FROM (SELECT a.*, row_number() over(ORDER BY 1) rn--假排序,速度同上 FROM t1 a) WHERE rn BETWEEN 21 AND 40; SELECT * FROM (SELECT a.*, row_number() over(ORDER BY c1) rn --真实排序,无法比较速度 FROM t1 a) WHERE rn BETWEEN 21 AND 40; Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用 。
分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句 。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围 。
上面给出的这个分页查询语句,在大多数情况拥有较高的效率 。分页的目的就是控制输出结果集大小,将结果尽快的返回 。
在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 40这句上 。选择第21 到40条记录存在两种方法,一种是上面例子中展示的在查询的第二层通过ROWNUM <= 40来控制最大值,在查询的最外层控制最小值 。
而另一种方式是去掉查询第二层的WHERE ROWNUM <= 40语句,在查询的最外层控制分页的最小值和最大值 。这是,查询语句如下: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A ) WHERE RN BETWEEN 21 AND 40 对比这两种写法,绝大多数的情况下,第一个查询的效率比第二个高得多 。
这是由于CBO 优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率 。对于第一个查询语句,第二层的查询条件WHERE ROWNUM