T-SQL分页查询和聚合函数

T-SQL分页查询

分页查询的必要

  1. 针对于目标数据量庞大的查询结果,为了能够快速查询
  2. 分页查询有助于应用程序对数据的一个显示

如何T-SQL进行分页查询

使用NOT IN分页
    SELECT TOP(5) * FROM StudentInfo WHERE StuID NOT IN(SELECT TOP(5)StuID FROM StudentInfo ORDER BY StuID) ORDER BY StuID 

    SELECT TOP(每页的数据量) * FROM 表名 WHERE 标识列 NOT IN(SELECT TOP(已经过去的页数)标识列 FROM 表名 ORDER BY 标识列) ORDER BY 标识列 
使用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

    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

T-SQL内置函数-聚合函数

SUM函数

返回表达式中所有值的和

    SELECT SUM(Score) FROM Score WHERE SubID=1

AVG函数

计算选择字段的平均值

    SELECT AVG(Score) FROM Score WHERE SubID=1

MIN函数

返回表达式的最小值

    SELECT MIN(Score) FROM Score WHERE SubID=1

MAX函数

返回表达式的最大值

    SELECT MAX(Score) FROM Score WHERE SubID=1

COUNT函数

返回组中项目的数量,如果用COUNT统计一列的数量如果该列有NULL值则不计算这列,因此一般使用COUNT函数统计某张表中的实体数量使用*查询

    SELECT COUNT(*) FROM Student

DISTINCT函数

返回一个集合,并从指定集合中删除重复的元组

    SELECT DISTINCT(StuID) FROM Score
发布了134 篇原创文章 · 获赞 118 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/dust__/article/details/104645708