zoukankan      html  css  js  c++  java
  • 相关子查询

    SQLServer子查询以分为相关子查询嵌套子查询

    类别编号   图书名   出版社       价格

    2           C#        盛通出版     23.00

    2          jsp开发   机械出版社   45.00

    3         高等数学   济南出版社  25.00

    3         疯狂英语   清华出版社   32.00

    1)嵌套子查询的执行不依赖与外部的查询。

    2)执行外部查询,并显示结果

    --查询所有价格高于平均价格的图书名,作者,出版社价格

    --例1

    Use tempdb

    go

    select 书名,作者,出版社,价格

    from Books

    where 价格

    select avg(价格)

    from Books

    go

    相关子查询的执行依赖于外部查询,多情况下是子查询的WHERE子句中引用外部查询的表

    --例2

    1)从外层查询中取出一个元组,将元组相关的列值传给内层查询。

    2)执行内层查询,得到子查询的值。

    select 书名,作者,出版社,价格

    FROM BOOK As a

    where 价格 >

    select avg(价格)

    from Books as b

    where a.类编号=b.类编号

    go

    --可以看出,相关查询无法独立于外部查询,该查询需要一个编号的值而这个值是个变量,随SQLSever检索Books表中的不同行而改变。

    先将Books表中的第一条记录的”编号“的值“2”带入子查询中子查询变为:

             select avg(价格)

                from Books as b

              where b.类编号=2

    子查询的结果为该类图书的平均价格,所以外部查询变为:

          select 书名,作者,出版社,价格

           from  Books as b

           where 价格  >34

    如果where条件为True,则第一条结果包括在结果集中,否则不包括。

    总结:

    1)相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。

    2)非相关子查询是独立于外部查询的子查询,子查询总共执行一次执行完毕后将值传递给外不查询。

  • 相关阅读:
    7.21 高博教育 数组 内存
    【基础扎实】Python操作Excel三模块
    PAT 甲级 1012 The Best Rank
    PAT 甲级 1011  World Cup Betting
    PAT 甲级 1010 Radix
    链式线性表——实验及提升训练
    循环程序设计能力自测
    链表应用能力自测
    PAT 甲级 1009 Product of Polynomials
    1008 Elevator (20分)
  • 原文地址:https://www.cnblogs.com/xiaoyu1997/p/5752764.html
Copyright © 2011-2022 走看看