zoukankan      html  css  js  c++  java
  • 03-子查询

    子查询:单行/多行

    查询时基于未知的值时,应使用子查询。

    过滤条件有未知的用子查询。

    子查询在主查询之前一次执行完成。

    子查询的结果被主查询使用。

    子查询在括号内,放在比较条件右侧。

    单行子查询比较符号(<、>、=、<=、>=、<>)。

    多行子查询比较符号(in、any(任一)、all(全部))。

     

    eg:

     1 --子查询中的 HAVING 子句
     2 --首先执行子查询。
     3 --向主查询中的HAVING 子句返回结果。
     4 --查询最低工资大于50号部门最低工资的部门id和其最低工资
     5 SELECT   department_id, MIN(salary)
     6 FROM     employees
     7 GROUP BY department_id
     8 HAVING   MIN(salary) >
     9                        (SELECT MIN(salary)
    10                         FROM   employees
    11                         WHERE  department_id = 50);
    12 
    13 --执行单行子查询
    14 --返回job_id与141号员工相同,salary比143号员工多的员工姓名,job_id 和工资
    15 SELECT last_name, job_id, salary
    16 FROM   employees
    17 WHERE  job_id =  
    18                 (SELECT job_id
    19                  FROM   employees
    20                  WHERE  employee_id = 141)
    21 AND    salary >
    22                 (SELECT salary
    23                  FROM   employees
    24                  WHERE  employee_id = 143);
    25 
    26 --in:等于列表中的任意一个
    27 --any :和子查询返回的某一个值比较
    28 --返回其它部门中比job_id为‘IT_PROG’部门任一工资低的员工的员工号、姓名、job_id 以及salary
    29 SELECT employee_id, last_name, job_id, salary
    30 FROM   employees
    31 WHERE  salary < any
    32                     (SELECT salary
    33                      FROM   employees
    34                      WHERE  job_id = 'IT_PROG')
    35 AND    job_id <> 'IT_PROG';
    36 
    37 --all:和子查询返回的所有值比较
    38 --返回其它部门中比job_id为‘IT_PROG’部门所有工资都低的员工的员工号、姓名、job_id 以及salary
    39 SELECT employee_id, last_name, job_id, salary
    40 FROM   employees
    41 WHERE  salary < ALL
    42                     (SELECT salary
    43                      FROM   employees
    44                      WHERE  job_id = 'IT_PROG')
    45 AND    job_id <> 'IT_PROG';

     

    eg:

     1 --查询和Zlotkey相同部门的员工姓名和雇用日期
     2 select last_name,hire_date
     3 from employees
     4 where department_id = (
     5                           select department_id
     6                         from employees
     7                           where last_name = 'Zlotkey'
     8                           )
     9 and last_name <> 'Zlotkey';
    10 --查询工资比公司平均工资高的员工的员工号,姓名和工资。
    11 select last_name,employee_id,salary
    12 from employees
    13 where salary > (select avg(salary)
    14                    from employees);
    15 --查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资
    16 select employee_id,last_name,salary
    17 from employees e1
    18 where salary > (
    19                    select avg(salary)
    20                    from employees e2
    21                    where e1.department_id = e2.department_id
    22                    group by department_id
    23                    );
    24 --查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名
    25 select employee_id,last_name
    26 from employees
    27 where department_id in (
    28                            select department_id
    29                            from employees
    30                            where last_name like '%u%'
    31                             )
    32     and last_name not like '%u%';
    33 --查询在部门的location_id为1700的部门工作的员工的员工号
    34 select employee_id
    35 from employees
    36 where department_id in (
    37                        select department_id
    38                        from departments
    39                        where location_id = 1700
    40                        );
    41 --查询管理者是King的员工姓名和工资
    42 select last_name,salary
    43 from employees
    44 where manager_id in (
    45                    select employee_id
    46                    from employees
    47                    where last_name = 'King'
    48                    );
  • 相关阅读:
    加法图灵机
    Experiment 1
    进制转换
    快速排序
    辗转相除、线段交点、多角形面积公式
    JS如何优雅监听容器高度变化
    解决react和其他框架之间的交互问题
    MacBook Pro触控板手势
    代理 请求登录失效(显示未登录)问题
    Web端 长按事件
  • 原文地址:https://www.cnblogs.com/shici/p/13398161.html
Copyright © 2011-2022 走看看