十五、子查询

一、子查询的定义、子查询出现的位置

  定义:select语句当中嵌套select语句,被嵌套的语句就是子查询

  子查询出现的位置:

    select

      .....(select)

    from

      .....(select)

    where

      .....(select)

二、where子句中使用子查询

  案例:查询高于平均工资的员工信息  

  SELECT *
  FROM emp
  WHERE sal > (SELECT AVG(sal) FROM emp);

 

  案例:查询谁的工资比Abel高? 

  SELECT last_name,salary
  FROM employees
  WHERE (
    SELECT salary
    FROM employees
    WHERE last_name = 'Abel'
  );

 

  案例:查询job_id与141号员工相同,salary比143号员工多的相应员工的姓名,job_id和工资 

  SELECT last_name,job_id,salary
  FROM employees
  WHERE job_id = (SELECT job_id
    FROM employees
    WHERE employee_id = '141'
  ) AND salary > (SELECT salary
    FROM employees
    WHERE employee_id = 143
  );

三、from后面嵌套子查询

  案例:查询每个部门平均薪水的薪资等级

  第一步:查询每个部门的平均薪资
  SELECT deptno,AVG(sal) FROM empgroup BY deptno

  第二步:将以上的表当做临时表t,将t表和salgrade表连接,
  条件是:t.avgsal BETWEEN s.losal AND s.hisal
  SELECT t.*,s.grade
  FROM (SELECT deptno,AVG(sal) AS avgsal FROM emp GROUP BY deptno) t
  JOIN salgrade s
  ON t.avgsal BETWEEN s.losal AND s.hisal;

四、union

  拼接两个不相干的表的数据一起显示  

  SELECT ENAME FROM emp
  UNION
  SELECT dname FROM dept;

 

posted @ 2019-11-12 12:46  笔心  阅读(58)  评论(0)    收藏  举报