• 相关子查询


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

  • 相关阅读:
    C++初始化列表
    正确理解Widget::Widget(QWidget *parent) :QWidget(parent)这句话
    C++ 的关键字(保留字)完整介绍
    Qt之UI文件设计和运行机制
    QT 5.12安装
    Win2016 安装VM与Hyper-V冲突解决办法
    多线程与并行
    Framework使用
    MVVMLight
    Knockout 应用
  • 原文地址:https://www.cnblogs.com/xiaoyu1997/p/5752764.html
Copyright © 2020-2023  润新知