一.T-SQL分页查询
1.分页查询的必要
- 针对于目标数据量庞大的查询结果,为了能够快速查询
- 分页查询有助于应用程序对数据的一个显示
2.如何T-SQL进行分页查询
(1)使用NOT IN分页
SELECT TOP(5) * FROM StudentInfo WHERE StuID NOT IN(SELECT TOP(5)StuID FROM StudentInfo ORDER BY StuID) ORDER BY StuID
NOT IN分页的公式:
SELECT TOP(每页的数据量) * FROM 表名 WHERE 标识列 NOT IN(SELECT TOP(已经过去的页数)标识列 FROM 表名 ORDER BY 标识列) ORDER BY 标识列
(2)使用IN进行分页
SELECT TOP(5) * FROM StudentInfo WHERE StuID IN
(SELECT TOP(5) StuID FROM StudentInfo WHERE StuID IN
(SELECT TOP(10) StuID FROM StudentInfo ORDER BY StuID)ORDER BY StuID DESC)ORDER BY StuID ASC
IN分页的公式:
SELECT * FROM 表名 WHERE 标识列 IN (SELECT TOP(每页的数据) 标识列 FROM 表名 WHERE 标识列 IN (SELECT TOP(当前页在内的总数据) 标识列 FROM 表名 ORDER BY 标识列)ORDER BY 标识列 DESC)ORDER BY 标识列 ASC
注意:
1.在子连接查询中如果有多个排序查询,务必要注意子查询语句如果要使 用ORDER BY则必须要使用TOP关键字
2. 使用IN语句进行分页前提是必须要计算好最后一页的数据
SQL面试题:
使用T-SQL语句查询出Student表中的第3-第8条数据(标识列不连续)
实现思路:
1.首先查出来前两条记录中的标识列数据
2.然后查询从第3条数据之后剩余的所有数据
3.最后在剩余的数据中取前5条数据
SELECT TOP(6)* FROM Teacher WHERE TID NOT IN (SELECT TOP(2) TID FROM Teacher ORDER BY TID) ORDER BY TID