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)非相关子查询是独立于外部查询的子查询,子查询总共执行一次执行完毕后将值传递给外不查询。

  • 相关阅读:
    git 配置免密上传,配置ssh key
    spring @value 为什么没有获取到值
    idea 下maven 导入本地jar,以及导入之后 java不能引用问题
    在git远程仓创建项目之后,提交本地项目的使用方法
    mysql 查询数据库参数命令
    spring Existing transaction found for transaction marked with propagation 'never' 解决
    nginx for ubuntu
    spring中for循环中事务
    面向接口编程详解(一)——思想基础
    实战MEF(5):导出元数据
  • 原文地址:https://www.cnblogs.com/xiaoyu1997/p/5752764.html
Copyright © 2011-2022 走看看