mysql查询什么或什么的数据_什么是mysql子查询及如何运用

MySQL子查询是查询语句中嵌套的查询,用于为主查询提供数据。子查询可以出现在SELECT、FROM、WHERE等位置,分为标量子查询、列子查询和表子查询。常见的子查询操作包括IN、ANY、ALL、SOME和EXISTS。本文通过实例详细解释了子查询的使用,并提供了如何在实际场景中运用子查询的示例。
摘要由CSDN通过智能技术生成

什么是mysql子查询及如何运用

发布时间:2020-06-03 17:00:28

来源:PHP中文网

阅读:139

作者:三月

下面讲讲关于什么是mysql子查询及如何运用,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完什么是mysql子查询及如何运用这篇文章你一定会有所受益。

例:

49de1194de02a7e07ee0071861c88cc6.png

修改后:

00403f50f929a96da222df30e8348201.png如果将该“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条件语句中,使用了主查询表中的数据(字段);

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

d35a5eb4f98a32f37bc35d95d07bef29.png

结果就:

0bf642a5655f25a97360f6d558e21ea6.png

注意:

- 这种子查询语句,没法“独立存在(独立运行)”,而是必须跟主查询一起使用;

- 其他子查询,是可以独立运行的,而且会得到一个运行的结果。

- 该子查询中的条件,应该设定为跟主查询的某个字段有一定的关联性判断,通常该判断就是这两个表的“本来该有的连接条件”

对于以上什么是mysql子查询及如何运用相关内容,大家还有什么不明白的地方吗?或者想要了解更多相关,可以继续关注我们的行业资讯板块。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值