温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

mysql怎么用子查询检索数据

发布时间:2021-09-01 15:16:31 来源:亿速云 阅读:149 作者:chen 栏目:关系型数据库

这篇文章主要介绍“mysql怎么用子查询检索数据”,在日常操作中,相信很多人在mysql怎么用子查询检索数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql怎么用子查询检索数据”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、相关子查询

相关子查询对于外部查询的每一个值都会有一个结果与其对应,其计算的过程是这样的:
1、扫描外查询的第一条记录
2、扫描子查询,并将第一条记录的对应值传给子查询,由此计算出子查询的结果
3、根据子查询的结果,返回外查询的结果。
4、重复上述动作,开始扫描外查询的第二条记录,第三条记录,直至全部扫描完毕
例句:

  1. --查询本部门最高工资的员工?

  2. --方法一,使用嵌套子查询(非关联子查询)

  3. select * from emp a where (a.deptno,a.sal) in (select deptno,max(sal) from emp group by deptno);


  4. --方法二,使用关联子查询

  5. select * from emp a where a.sal=(select max(sal) from emp where deptno=a.deptno);

二、EXISTS

exists是判断 exits 后面的 sql 语句是否为真,若为真则整个sql句子成立,否则没有任何记录。
例句:

  1. SELECT 1 FROM DUAL WHERE EXISTS (SELECT 1 FROM DUAL WHERE 2 = 1);

三、WITH

语法:

  1. SELECT *

  2.   FROM (--模拟生一个20行的数据

  3.         SELECT LEVEL AS lv

  4.           FROM DUAL

  5.        CONNECT BY LEVEL < 20) tt

  6.  WHERE tt.lv > 10 AND tt.lv < 15


  7. WITH TT AS(--模拟生一个20行的数据

  8.            SELECT LEVEL AS lv

  9.              FROM DUAL

  10.           CONNECT BY LEVEL < 20)

  11. SELECT lv

  12.   FROM TT

  13.  WHERE lv > 10 AND lv < 15

  14. WITH tempName AS (SELECT ....)

  15. SELECT ...

说明:
  可认为在真正进行查询之前预先构造了一个临时表TT,之后便可多次使用它做进一步的分析和处理
优点:
  增加了SQL的易读性,如果构造了多个子查询,结构会更清晰;更重要的是:“一次分析,多次使用”,这也是为什么会提供性能的地方,达到了“少读”的目标。
例句:

  1. --普通查询

  2. SELECT *

  3.   FROM (--模拟生一个20行的数据

  4.         SELECT LEVEL AS lv

  5.           FROM DUAL

  6.        CONNECT BY LEVEL < 20) tt

  7.  WHERE tt.lv > 10 AND tt.lv < 15;


  8. --with语句

  9. WITH TT AS(--模拟生一个20行的数据

  10.            SELECT LEVEL AS lv

  11.              FROM DUAL

  12.           CONNECT BY LEVEL < 20)

  13. SELECT lv

  14.   FROM TT

  15.  WHERE lv > 10 AND lv < 15;

到此,关于“mysql怎么用子查询检索数据”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI