美文网首页
17.子查询

17.子查询

作者: Liuzhl | 来源:发表于2018-12-21 14:03 被阅读40次
  • 查询中又有查询称为子查询,也就是说一条语句中有多个select关键字
  • 如查询工资最高的员工的详细信息,下面这种写法是错误的,聚合函数不能出现在where条件中
SELECT * FROM emp WHERE sal = MAX(sal)
  • 子查询步骤:
    • 先查出最高工资
    SELECT MAX(sal) FROM emp
    
    • 再查询工资等于最高工资的员工,将上次查询得到的结果用()括起来作为值给sql语句
    SELECT * FROM emp WHERE sal = (SELECT MAX(sal) FROM emp);
    
  • 子查询能出现的位置
    • from后作为表存在
    • where后作为条件存在
SELECT * 
FROM (子查询)
WHERE (子查询)
子查询在结果后作为表存在
  • 如:查询销售中工资最高的人
SELECT *
FROM (SELECT * FROM emp WHERE job = '销售员') e
WHERE sal = (SELECT MAX(sal) FROM (SELECT * FROM emp WHERE job = '销售员') j);
  • 注意1:每一个子查询出来的表都必须有别名
  • 注意2:这种写法比较臃肿,可以用其他sql语句完成该功能
SELECT * 
FROM emp 
WHERE job = '销售员' 
ORDER BY sal DESC 
LIMIT 1;
子查询在where后作为条件存在
单行单列

题目:查询最高工资的员工
第一步:查询出最高工资,得到一个单行单列的结果

SELECT MAX(sal) FROM emp

第二步:查询出工资=最高工资的员工

SELECT * FROM emp WHERE sal = (SELECT MAX(sal) FROM emp)
  • where 条件可以用= != > < >= <= 等条件
单行多列

题目:查询所有工作和上级与韦一笑一样的员工
第一步:查询出韦一笑的工作和上级, 得到一个单行多列的结果

SELECT job, mgr FROM emp WHERE ename = '韦一笑';

第二步:查询出与韦一笑工作和上级相同的人

SELECT * FROM emp WHERE (job, mgr) IN (SELECT job, mgr FROM emp WHERE ename = '韦一笑');
多行单列

题目:查询出工资比20部门所有人/某一人高的员工信息
第一步:查询出20部门的所有人的工资,得到一个多行单列的结果

SELECT sal FROM emp WHERE deptno = 20;

第二步:查询比里面所有人工资都高的人,注意ALL关键字的使用

SELECT * FROM emp WHERE sal > ALL (SELECT sal FROM emp WHERE deptno = 20);

第三步:查询出比里面某一人工资高的人,注意ANY关键字的使用

SELECT * FROM emp WHERE sal > ANY (SELECT sal FROM emp WHERE deptno = 20);
多行多列

常用在from后面作为表存在,前面已经有例子

相关文章

  • 17.子查询

    查询中又有查询称为子查询,也就是说一条语句中有多个select关键字 如查询工资最高的员工的详细信息,下面这种写法...

  • Oracel_子查询

    SQL子查询 子查询语法 子查询 (内查询) 在主查询之前一次执行完成。 子查询的结果被主查询(外查询)使用 。 ...

  • Oracle | 子查询和伪列

    1. 子查询 (1)单行子查询 (2)多行子查询 1)ANY子查询 2)ALL 子查询 2. 伪列...

  • 《SQL必知必会》第 11 课 使用子查询

    目标: 11.1 子查询 11.2 利用子查询进行过滤 11.3 作为计算字段使用子查询 11.1 子查询 查询(...

  • MySQL 子查询

    什么是子查询 为什么要使用子查询 子查询的分类 怎样使用子查询 关联子查询 要使用的数据表 1. 什么是子查询? ...

  • 数据库第七天

    子查询 查询里面还有查询注意: 子查询优先于主查询执行 最好子查询用括号 查询比ALLEN工资高的员工信息 单行子...

  • SQL查询_高级查询

    SQL查询_高级查询 一、子查询 子查询出现的位置一般为条件语句,oracle会先执行子查询,再执行父查询,子查询...

  • 17/12/6 子查询

    17/12/6 子查询 单行子查询 括号内的查询叫做子查询,也叫内部查询,先于主查询的执行。 子查询可以嵌入1.w...

  • MySql(七)子查询与虚表

    一、子查询 子查询在主查询前执行一次 主查询使用子查询的结果 子查询要用括号括起来 将子查询放在比较运算符的右边 ...

  • 数据分析之SQL子查询

    文章阅读路线: SQL子查询概念 独立子查询实例 相关子查询实例 SQL子查询常见玩伴 1.SQL子查询概念 子查...

网友评论

      本文标题:17.子查询

      本文链接:https://www.haomeiwen.com/subject/zwbdkqtx.html