最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

mysql子查询简单介绍

来源:动视网 责编:小采 时间:2020-11-09 08:43:26
文档

mysql子查询简单介绍

mysql子查询简单介绍:子查询基本含义,就是在一个查询语句(select语句)中的内部,某些位置,又出现的查询语句。本文主要和大家分享mysql子查询简单介绍,希望能帮助到大家。例: 修改后: 如果将该select 5000的子查询语句,替换为select出来所有商品的平均价,就
推荐度:
导读mysql子查询简单介绍:子查询基本含义,就是在一个查询语句(select语句)中的内部,某些位置,又出现的查询语句。本文主要和大家分享mysql子查询简单介绍,希望能帮助到大家。例: 修改后: 如果将该select 5000的子查询语句,替换为select出来所有商品的平均价,就

  • 子查询是为主查询服务的

  • 都是子查询获得一定的结果数据之后,才去执行主查询;

  • 在形式上,可以有如下表达:

  • selelct 字段或表达式或子查询 [as 别名] from 表名或链接结果或子查询 where 字段或表达式或子查询的条件判断

  • 即可以在这几个位置出现子查询(其中having其实也可以,因为它跟where是一样含义);

    子查询,按位置(场合)分:

    类型形式
    作为主查询的结果数据select c1,(select f1 from tab2) as f11 from tab1; #这里子查询应该只有一个数据(一行一列,标量子查询)
    作为主查询的条件数据select c1 from tab1 where c1 in (select f1 from tab2); #这里子查询可以是多个数据(多行一列,列子查询)
    作为主查询的来源数据select c1 from (select f1 as c1, f2 from tab2) as t2; #这里子查询可以是任意查询结果(表子查询)

    常见子查询

    比较运算符中的子查询

    形式:

  • 操作数 比较运算符 (标量子查询);

  • 说明:

  • 操作数,其实就是比较运算符的2个数据之一而已,通常就是一个字段名;

  •  select .... from XXX where id > 5;

    例:

  • 找出最高价的商品;

  • select * from product where price = (select max(price) from product );

    使用in的子查询

  • 以前用的in的用法:

  • XX in (值1,值2,值3,....);
  • 则in子查询为:

  • XX in (列子查询)

    例:

  • 找出所有类别名称中带“电”这个字的所有商品;

  • select * from product where protype_id in( 
    select protype_id from product_type where protype_name like ‘%电%’
    );

    使用any的子查询

    形式:

    操作数 比较运算符 any (列子查询);

    含义:

  • 当某个操作数(字段) 对于该列子查询的其中任意一个值,满足该比较运算符,则就算是满足了条件;
    例:

  • select * from tab1 where id > any (select f1 from tab2);

    使用all的子查询:

    形式:

    操作数 比较运算符 all (列子查询);

    含义:

  • 当某个操作数(字段) 对于该列子查询的所有数据值,都满足该比较运算符,才算满足了条件;

  • 例:

    select * from tab2 where f1 > all ( select id from tab1 );

    使用some的子查询

  • 一句话:some是any的同义词。

  • 使用exists的查询

    形式:

    where exists( 子查询 )

    含义:

  • 该子查询如果“有数据”,则exists的结果是true,否则就是false

  • 说明:

    因为,exists子查询的该含义,造成主查询往往出现这样的情形:要么全都取出,要么都不取出。如果局限于这个含义(使用情形),其基本就失去了它的现实使用意义。

    所以:

    实际应用中,该子查询,往往都不是的子查询,而是会需要跟“主查询”的数据源(表),建立某种关系——通常就是连接关系。建立的方式是“隐式的”,即没有在代码上体现关系,但却在内部有其连接的“实质”。

  • 此隐式连接方式,通常就体现在子查询中的where条件语句中,使用了主查询表中的数据(字段);

  • 例:

  • 查询商品表中其类别名称中带“电”这个字的所有商品;

  • 结果就:

    注意:
    - 这种子查询语句,没法“存在(运行)”,而是必须跟主查询一起使用;
    - 其他子查询,是可以运行的,而且会得到一个运行的结果。
    - 该子查询中的条件,应该设定为跟主查询的某个字段有一定的关联性判断,通常该判断就是这两个表的“本来该有的连接条件”

    最后一个结论:

    如果一个查询需求,可以使用连接查询的,也可以使用子查询得到,则通常推荐使用连接插叙,效率归更高。

    文档

    mysql子查询简单介绍

    mysql子查询简单介绍:子查询基本含义,就是在一个查询语句(select语句)中的内部,某些位置,又出现的查询语句。本文主要和大家分享mysql子查询简单介绍,希望能帮助到大家。例: 修改后: 如果将该select 5000的子查询语句,替换为select出来所有商品的平均价,就
    推荐度:
    标签: 查询 介绍 mysql
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top