Blogger Information
Blog 82
fans 0
comment 1
visits 107876
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
mysql -- 子查询
子龙的博客搬家啦httpswwwcnblogscomZiLongZiLong
Original
904 people have browsed it

所谓子查询,是指出现在其他语句中的select语句,也称内查询,外部的查询语句对应的称为主查询,或外查询。

分类

案子查询出现的位置不同,可分为:

  1. select 后面,支持标量子查询

  2. from 后面,支持表子查询

  3. wherehaving后面,标量子查询,或列子查询 ( 一列多行 ),也支持行子查询( 多行多列 ),但用的较少

  4. exists 后面又称相关子查询, 表子查询

按结果集的行列数不同,有可分为

  1. 标量子查询 ,结果集一行一列

  2. 列子查询 , 结果集有一列多行

  3. 行子查询, 结果集为多行多列,主要为一行多列

  4. 表子查询, 一般为多行多列,对结果集的行列数无要求

用的较多的是用在where或having后边的子查询,首先可以是标量子查询,又称为单行子查询,也支持列子查询,一列多行,又称多行子查询,最后还支持行子查询,当然前边也介绍过了,用的较少。

在这个位置的子查询具有如下几个特点:

  1. 子查询在小括号内(所有的子查询都是)
  2. 子查询放在运算符右侧
  3. 标量子查询搭配单行操作符使用, 如 > ,< ,<>等这些运算符,列子查询搭配多行操作符使用,诸如any,some,in,all。

    where 后边的子查询

    首先介绍标量子查询:
    一条where后边的子查询可写为:
    1. select *
    2. from 某个表
    3. where 某个列 > | < | <= | = | <>
    4. (
    5. select 单个字段
    6. from 某个表
    7. where ....
    8. 其他语句
    9. ) and | or 其他子查询...;
    若子查询结果非标量,即出现多行多列或者空结果集时,都是不正确的。

列子查询( 又叫做多行子查询 )`:

其实语法上跟标量子查询没什么区别,只是操作符变成了多行操作符,子查询的结果是一列多行的。

行子查询:

行子查询,使用较少,一条行子查询可以是这样:

  1. select 查询字段 from 某个表 where (字段1,字段2) = (
  2. 一条可以产生两列一行的结果集的子查询
  3. )

select 后边的子查询

select后边只能跟标量子查询,一条select后的子查询可以写为

  1. select (
  2. 一条标量子查询语句
  3. ) 别名
  4. ...其他sql语句;

from 后边的子查询

from后边的子查询,会充当一个临时表,故而对结果集是无要求的,即为表子查询
语法:

  1. select 字段名 from (
  2. 任意子查询...
  3. ) 别名
  4. 其他sql语句;

子查询的别名是必须的,这里。

exists 后边的子查询

exists 子查询,假如子查询有结果存在,则exists 条件成立。
一般exists 都可以用in代替,所以他用的也较少。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post