大家跟我一起涨知识(高级查询与分页)

 高级查询

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-09 18:42  白兴强  阅读(501)  评论(0编辑  收藏  举报