zoukankan      html  css  js  c++  java
  • SQL Server 之 子查询与嵌套查询

    当由where子句指定的搜索条件指向另一张表时,就需要使用子查询或嵌套查询。

    1 子查询

    子查询是一个嵌套在select、insert、update或delete语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询。

    1.1语法规则:

    • 子查询的select查询总使用圆括号括起来
    • 不能包括compute或for browse子句
    • 如果同时指定top子句,则可能只包括order by子句
    • 子查询最多嵌套32层,个别查询可能会不支持32层嵌套
    • 任何可以使用表达式的地方都可以使用子查询,主要它返回的是单个值
    • 如果某个表只出现在子查询中而不出现在外部查询中,那么该表中的列就无法包含在输出中

    1.2 语法格式:

    • where 查询表达式 [not] in(子查询)
    • where 查询表达式 比较运算符 [any|all] (子查询)
    • where [not] exists (子查询)

    2 嵌套查询

    嵌套查询是指将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询。

    嵌套查询中上层的查询块称为外侧查询或父查询,下层查询块称为内层查询或子查询。SQL语言允许多层嵌套,但是在子查询中不允许出现order by子句,order by子句只能用在最外层的查询中。

    嵌套查询的处理方法是:先处理最内侧的子查询,然后一层一层地向上处理,直到最外层的查询块。

    2.1 简单的嵌套查询

    子查询的运算符含有=、<>、<、>、<=、>=

    三个查询:

    第一个:查询年纪>25的老师所教的学生

    第二个:查询年纪>25的老师

    第三个:验证查询到的学生信息

    对比:当子查询中的分那会的结果不是一个时,父查询无法正常工作

    2.2 带IN的嵌套查询

    当子查询返回一系列值时,适合带IN的嵌套查询。

    2.3 NOT IN

    2.4 SOME

    2.5 ANY

    2.6 ALL

    2.7 EXIST

  • 相关阅读:
    每周进度条(第九周)
    团队项目最后更改版
    项目需求分析与建议 NABCD模型
    课堂练习找水王
    问题账户需求分析
    2016年秋季个人阅读计划
    学习进度条
    用户体验
    程序员修炼之道——从小工到专家阅读笔记03
    程序员修炼之道——从小工到专家阅读笔记02
  • 原文地址:https://www.cnblogs.com/imstrive/p/6525901.html
Copyright © 2011-2022 走看看