Mysql子查询

概念分析:

根据相关性分:

  (1)不相关子查询:一条Sql语句中含有多条SELECT语句,先执行子查询,再执行外查询,子查询可对立运行

          关键字:(1)先子查询,再外查询

              (2)可以对立运行,即可以单独运行子查询,对外查询不干扰

  (2)相关子查询:子查询不能独立运行,并且先运行外查询,再运行子查询

          关键字:(1)先外查询,再子查询

              (2)子查询不能独立运行

例如:

(1)不相关子查询

 --查询【和CLARK同一部门且比他工资低的】雇员名字和工资。
-- 第一步:先查询CLARK部门和和CLARK工资
select deptno from emp where ename='CLARK'
select sal from emp where ename ='CLARK'
-- 第三步:分别查询,部门和CLARK一样的,工资比他少的
  select ename ,sal,deptno from emp
where deptno = (select deptno from emp where ename='CLARK')
and sal < (select sal from emp where ename ='CLARK')
这上面查询过程中:子查询可以独立运行,并且是先于外查询的,

(2)相关子查询

--查询[工资高于其所在部门20的平均工资的]那些员工
  select * from emp e1 where e1.deptno = 20 and sal >(select avg(sal) from emp e2 where e2.deptno = 10)

在这条语句中,子查询内部的WHERE关键字后的条件中外查询的条件参与,不能单独运行

二:根据查询结果

    (1)单行子查询:子查询结果只有一条数据

    (2)多行子查询:子查询结果有多条记录,此时之间不能用= < >,要借助 ANY  ALL IN 来实现

例如:

(1)单行子查询:

--查得所有【比“CLARK”工资高的】员工的信息
select * from emp
select sal from emp where ename ='CLARK' --
select * from emp where sal > 2450.00
子查询结果只有一条
select * from emp where sal > (select sal from emp where ename ='CLARK')

(2)多行子查询

    --查询工资低于任何一个“CLERK”的工资的雇员信息。
select * from emp where sal< (select max(sal) from emp where job ='CLERK')
select sal from emp where job ='CLERK' --1300 1100 950 800 select * from emp where sal< any(select sal from emp where job ='CLERK') --查询[工资比所有的“SALESMAN”都高的]雇员的编号、名字和工资。
--ALL >ALL
select empno,ename,sal from emp where sal >(select max(sal) from emp where job ='SALESMAN') select empno,ename,sal from emp where sal > ALL(select sal from emp where job ='SALESMAN') select max(sal) from emp where job ='SALESMAN' --查询部门20中职务同部门10的雇员一样的雇员信息。
select job from emp where deptno = 20 --CLERK ANALYST
select job from emp where deptno = 10 --MANAGER PRESIDENT CLERK ---- CLERK MANAGER
-- IN 等于其中任何一个
select * from emp where deptno = 20 and job in (select job from emp where deptno = 10)

Mysql的子查询相关知识,少但是精的更多相关文章

  1. 聊聊MySQL的子查询

    1. 背景 在之前介绍MySQL执行计划的博文中已经谈及了一些关于子查询相关的执行计划与优化.本文将重点介绍MySQL中与子查询相关的内容,设计子查询优化策略,包含半连接子查询的优化与非半连接子查询的 ...

  2. mysql in 子查询 效率慢 优化(转)

    mysql in 子查询 效率慢 优化(转) 现在的CMS系统.博客系统.BBS等都喜欢使用标签tag作交叉链接,因此我也尝鲜用了下.但用了后发现我想查询某个tag的文章列表时速度很慢,达到5秒之久! ...

  3. MySQL 行子查询(转)

    MySQL 行子查询 行子查询是指子查询返回的结果集是一行 N 列,该子查询的结果通常是对表的某行数据进行查询而返回的结果集. 一个行子查询的例子如下: SELECT * FROM table1 WH ...

  4. MySQL FROM 子查询

    FROM 子句中的子查询 MySQL FROM 子查询是指 FROM 的子句作为子查询语句,主查询再到子查询结果中获取需要的数据.FROM 子查询语法如下: SELECT ... FROM (subq ...

  5. MySQL 表子查询

    MySQL 表子查询 表子查询是指子查询返回的结果集是 N 行 N 列的一个表数据. MySQL 表子查询实例 下面是用于例子的两张原始数据表: article 表: aid title conten ...

  6. MySQL 行子查询

    MySQL 行子查询 行子查询是指子查询返回的结果集是一行 N 列,该子查询的结果通常是对表的某行数据进行查询而返回的结果集. 一个行子查询的例子如下: SELECT * FROM table1 WH ...

  7. Mysql in子查询中加limit报错

    Mysql in子查询中加limit报错 select id from aa where id in ( select id from bb limit 10 ); 改写成 SELECT id FRO ...

  8. Mysql常用sql语句(20)- 子查询重点知识

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 子查询语句可以嵌套在 sql 语句中任何表达式出现的位 ...

  9. MySQL(五) —— 子查询

    子查询(SubQuery)是指出现在其他SQL语句内的SELECT语句. 如: SELECT * FROM t1 WHERE col1 = (SELECT col2 FROM t2); 其中 SELE ...

随机推荐

  1. Python——pyqt5——智能提示(lineEdit/conmbobox)

    一.文本框智能补全 completer = QtWidgets.QCompleter(data) completer.setCompletionMode(QtWidgets.QCompleter.Po ...

  2. [ffmpeg] 滤波

    ffmpeg中有很多已经实现好的滤波器,这些滤波器的实现位于libavfilter目录之下,用户需要进行滤波时,就是是调用这些滤波器来实现的.ffmpeg对于调用滤波器有一整套的调用机制. 基本结构 ...

  3. 洛谷 P2590 [ZJOI2008]树的统计

    大家好,我非常喜欢暴力数据结构,于是我用块状树过了这道题目 题目: 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w. 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE ...

  4. dgraph解决社交关系中的正反向查找

    dgraph解决社交关系中的正反向查找 本篇介绍的是, 社交关系中的关注者与被关注者在dgraph中如何实现查找. 对dgraph的基本操作不太清楚的可以看看我之前写的博客 dgraph实现基本操作 ...

  5. About me & 留言板

    本人名字首字母gzy,就读于gryz,是高二在读生,也是一名oier. 老婆:远近渔. 爱好: 各种体育类项目,(但是不精通,不会打台球),喜欢摄影作品,喜欢听rap和摇滚,也喜欢一些描述生活英文歌曲 ...

  6. selenium各版本jar包下载地址

    http://selenium-release.storage.googleapis.com/index.html

  7. .Net Core在Centos7上初体验

    本文主要内容是简单介绍如何在centos7上开发.Net Core项目,在此之前我们首先了解下.Net Core的基本特性. 1 .Net Core和.Net FrameWork的异同 1.1 .Ne ...

  8. Jdk和Spring Boot版本选择

    ==========================版本选择的原则:==========================1. 优先选择官方指定的long-term support(LTS)版本, 非L ...

  9. Python——LOL官方商城皮肤信息爬取(一次练手)

    # -*- coding utf-8 -*- import urllib import urllib.request import json import time import xlsxwriter ...

  10. P5283 [十二省联考2019]异或粽子

    考场上想到了没打完,细节思路还是不是很优,我原先的想法是每一次找完后标记那个点,下次再继续找(并不是这个意思,说不清楚)但实际上和平衡树一样加个大小就很好写了 #include<bits/std ...