旗下导航:搜·么
当前位置:网站首页 > MySQL教程 > 正文

mysql子查询简朴引见【MySQL教程】,mysql,介绍,查询

作者:搜教程发布时间:2019-12-01分类:MySQL教程浏览:88评论:0


导读:子查询基础寄义,就是在一个查询语句(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子查询?怎样应用子查询举行过滤?

MySQL子查询的优化

以上就是mysql子查询简朴引见的细致内容,更多请关注ki4网别的相干文章!

标签:mysql介绍查询


欢迎 发表评论: