高级子查询(嵌套,相关)与分页

 

 高级子查询(嵌套)   Select StuId,StuName,   SelCourses=(Select Count(CourseId) From tblScore t1 Where t1.StuId=s1.StuId),   SumScore=(Select Sum(Score) From tblScore t2 Where t2.StuId=s1.StuId)     From tblStudent s1 嵌套查询  

select a.username,numa,numb from    (    select username,count(username)    as numa from a         where isdel=0 group by username order by numa desc) a,       (select username,count(username) as numb from a      where isdel=0 and isx=1 group by username) bwhere a.username = b.username

相关子查询  

SElECT booksName,press,classNo,price  FROM Books As a  WHERE price >  (       SELECT AVG(price)       FROM Books AS b         WHERE a.classNo=b.classNo )   GO

详解:    先将Books表中的第一条记录的“class”的值“2”代入子查询中,子查询变为:         SELECT AVG(price)           FROM Books AS b          WHERE b.class=2     子查询的结果为该类图书的平均价格,所以外部查询变为:         SElECT booksName,press,classNo,price

         FROM Books As a        WHERE 价格 > 34        如果WHERE条件为True,则第一条结果包括在结果集中,则否不包括。对Books表中的所有行运行相同的过程,最后形成的结果集及最后返回结果。               分页   SQL分页语句

说明,页大小:每页的行数;页数:第几页。使用时,请把“页大小”和“页大小*(页数-1)”替换成数字。   方法1:  

SELECT TOP 页大小 * FROM table1 WHERE id NOT IN           (           SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id           ) ORDER BY id

    方法2:  

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:   SELECT TOP 页大小 * FROM         (         SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1         ) A WHERE RowNumber > 页大小*(页数-1)         SELECT查询语句是由七个子句构成,其中SELECT和FROM子句是一个完整SELECT查询语句必须要有的。     (1) SELECT子句 列出所有要求SELECT语句进行检索的数据项,这些项可能取自数据库中关系表的列,也可以是SQL在执行查询时进行计算的表达式。这里的ALL和DISTINCT选项,表示查询出的结果中是否容许有内容重复的行出现,缺省时是ALL项,表示容许有重复的行出现,而*则表示查询出所指定关系表中所有的列。   (2)FROM子句    FROM子句列出包含所要查询的数据关系表。    (3)WHERE子句     WHERE子句告诉SQL只查询某些关系表中满足一定要求的行的数据,查询要求由WHERE子句中的查询条件确定。   (4)GROUP BY子句    GROUP BY子句指定当前查询是汇总查询,即不是对根据每行产生一个查询结果,而是对相似的行进行分组,然后再对每组产生一个汇总查询的结果。    (5)HAVING子句    HAVING子句告诉SQL只对由GROUP BY所得到的某些行组的结果进行过滤,选择出满足分组条件的分组。    (6)ORDER BY子句    ORDER BY子句确定是否将查询出的结果按一列或多列中的数据进行排序,缺省时是不排序的。    (7)INTO子句    INTO子句确定是否将查询出的结果存入一张新的关系表中,缺省时只将查询出现的结果显示在屏幕上。这是非标准SELECT语句中的子句,但目前绝大多数实际应用的SQL数据库系统的SQL语言提供了这一选项  

posted @ 2016-03-10 12:40  吴松~  阅读(211)  评论(0编辑  收藏  举报