子查询

定义:在一个完整的查询语句里面,嵌入N个内部查询得来的结果,子查询本身没有什么么完整语法。导出可以嵌套子查询。
如何区分那个地方需要用到子查询呢?
在哪个子句中出现,并没有什么明确的结论。只是在一个整体中嵌入若干个部分。
简单出现位置参考:
1.WHERE子句中:当子查询返回单行单列、或者多行单列,单行单列的情况下,这种子查询都往往出现在WHERE子句中。
2.FROM子句,子查询返回多行多列数据,可以按照表处理。
3.在SELECT中:子查询返回单行单列。(不建议)
之所以要提出子查询概念,主要是为了解决查询的性能问题。通过子查询可以编写性能更好的查询语句。

WHERE中使用子查询

WHERE子句的主要作用:限制数据表中数据行的显示,一般都是做数据的筛选使用的。

范例:
图片.png
  • 查询的关键是
    1.第一步:一定要找到公司最低的工资,这个最低工资一定是统计的结果。(统计查询语句MIN())SELECT MIN(sal) FROM emp;
    2.第二步:
    图片.png

    图片.png

    图片.png
    (AVG)
    图片.png

    图片.png

子查询返回单行多列

单行多列指的是要求同时满足两个列的判断。例如:
图片.png

图片.png

图片.png

图片.png

图片.png

图片.png

子查询返回多行多列
一旦子查询返回单行多列的数据,实际上子查询所返回的内容就属于一个数据的范围了。

  • IN 操作,
    图片.png

    图片.png
图片.png

***千万要记住,如果使用了NOTIN,并且子查询的结果包含NULL则不会有任何查询。


图片.png

由于mgr有的结果为空,所以NOT IN 不会进行查询呢。
ANY操作:


图片.png

①=ANY()的情况
图片.png

图片.png

②>ANY()的情况
比最小的值要大
③<ANY()
比最大的值要小


ALL:所有内容

ALL:比集合中最大的还要大
<ALL:比集合中最小的还要小

这几种符号的选择,还是看我们的查询要求,如比每个人都要大等。
以上就是用WHERE子查询的情况包括:
1.单行单列
2.单行多列
3.多行单列
这三种情况会用WHERE进行子查询处理。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、隐式连接 1、笛卡尔乘积笛卡尔(Descartes)乘积又叫直积。假设集合A={a,b},集合B={0,1,2...
    AKyS佐毅阅读 2,080评论 0 1
  • where子句:子查询返回结果为单行单列,单行多列,多行单列(往往使用in,any,all)操作符having子句...
    李哈哈_bing阅读 2,606评论 0 4
  • 我们先看图说话,如图1. 看图之后,我们可以很容易的理解了子查询。 子查询:在一个查询语句中包含了另外一个查询语句...
    肉肉要次肉阅读 3,268评论 0 2
  • 一、子查询定义 定义: 子查询允许把一个查询嵌套在另一个查询当中。 子查询,又叫内部查询,相对于内部查询,包含内部...
    我是强强阅读 3,246评论 0 4
  • 1,wherer:子查询一般会返回单行单列 单行多列 多行单列 ; 2,having:子查询会返回单行单列,同时表...
    大小说家RCQ阅读 258评论 0 2