0

0

mysql子查询简单介绍

小云云

小云云

发布时间:2018-03-15 10:41:45

|

2317人浏览过

|

来源于php中文网

原创

子查询基本含义,就是在一个查询语句(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; #这里子查询可以是任意查询结果(表子查询)

常见子查询

比较运算符中的子查询

形式:

睿拓智能网站系统-网上商城
睿拓智能网站系统-网上商城

睿拓智能网站系统-网上商城1.0免费版软件大小:5M运行环境:asp+access本版本是永州睿拓信息专为电子商务入门级用户开发的网上电子商城系统,拥有产品发布,新闻发布,在线下单等全部功能,并且正式商用用户可在线提供多个模板更换,可实现一般网店交易所有功能,是中小企业和个人开展个人独立电子商务商城最佳的选择,以下为详细功能介绍:1.最新产品-提供最新产品发布管理修改,和最新产品订单查看2.推荐产

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

说明:

  • 操作数,其实就是比较运算符的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子查询的优化

相关专题

更多
PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

52

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

54

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

35

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

9

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

9

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

15

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

125

2026.01.18

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

138

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

159

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.8万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 801人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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