zoukankan      html  css  js  c++  java
  • Oracle 学习笔记(七)

    子查询

    概念:指嵌入在其他 sql 语句中的 select 语句,也叫做嵌套查询。 

     

    单行子查询 

    指只返回一行数据的子查询语句

    查询 SMITH 同部门的所有员工 

    1、查询出 SMITH 的部门号 

    select deptno from emp WHERE ename = 'SMITH'; 

    2 、查询 SMITH 同部门的所有员工  

    SELECT * FROM emp WHERE deptno = (select deptno from emp WHERE ename = 'SMITH'); 

    (执行 sql 是从左到右扫描,如果有括号,括号里面的先被优先执行)

    多行子查询

    指返回多行数据的子查询语句

    查询和部门 10 的工作相同的雇员的名字、岗位、工资和部门号 

    1、去重查询部门为 10 的工作

    SELECT DISTINCT job FROM emp WHERE deptno = 10; 

    2、查询和部门 10 的工作相同的雇员的名字、岗位、工资和部门号

    SELECT * FROM emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno = 10); 

    (不能用 job = **,因为等号是一对一的) 

    在多行子查询中使用 all 操作符

    查询工资比部门 30 的所有员工的工资高的员工的姓名、工资和部门号

    SELECT ename, sal, deptno FROM emp WHERE sal > all (SELECT sal FROM emp WHERE deptno = 30); 

    还可以用函数 MAX 查询 

    SELECT ename, sal, deptno FROM emp WHERE sal > (SELECT MAX(sal) FROM emp WHERE deptno = 30); (执行效率上, 函数高得多) 

    在多行子查询中使用 ANY 操作符

    查询工资比部门 30 的任意一个员工的工资高的员工姓名、工资和部门号

    SELECT ename, sal, deptno FROM emp WHERE sal > ANY (SELECT sal FROM emp WHERE deptno = 30); 

    今天笔记做到这,后续有空继续。

      

    【微信公众号:Stephen】一个毕业三年后自学 Java 入行的程序员。
  • 相关阅读:
    运算符优先级问题
    文件操作工具,需者自取
    Text文档编码识别方法
    删除重复文件的程序
    修道士和野人问题
    猜数字游戏
    存储器层级图
    IL指令汇总
    输入1~8,每个数字不重复
    厦门大学线下编程比赛第一题:求和
  • 原文地址:https://www.cnblogs.com/stephen-java/p/10816713.html
Copyright © 2011-2022 走看看