登录  /  注册
博主信息
博文 82
粉丝 0
评论 1
访问量 125739
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
mysql -- 子查询
子龙的博客搬家啦httpswwwcnblogscomZiLongZiLong
原创
1024人浏览过

所谓子查询,是指出现在其他语句中的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代替,所以他用的也较少。

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学