• 17 SQL语言——子查询与关键字in


    子查询

    单行子查询


    --使用时机:筛选条件并不明确需要执行一次查询,并且查询结果只有一个字段并只有一个值
    --注意:where子句中允许出现查询语句,该查询语句称为子查询
    --例1:查询所有比雇员‘CLARK’工资高的员工信息。
    --普通两步:
    select sal from emp where ename='CLARK';--得到2450
    select* from emp where sal>2450;
    --使用子查询:
    select * from emp where sal>(select sal from emp where ename='CLARK');
    --例2:查询工资高于平均工资的员工的名字和工资
    select ename,sal from emp where sal>(select avg(sal) from emp);
    --例3:查询和scott属于同一部门且工资比他低的员工资料
    select * from emp where sal<(select sal from emp where ename='SCOTT');
    --例4:查询工资最高的员工资料
    select * from emp where sal=(select max(sal) from emp);
    --例5:查询职务和scott相同,雇佣时间早的员工信息
    select * from emp where hiredate<(select hiredate from emp where ename='SCOTT');
    --例6:查询工资比scott高或者雇佣时间早的员工编号和姓名
    select *
    from emp
    where hiredate<(select hiredate from emp where ename='SCOTT')
    or (sal>(select sal from emp where ename='SCOTT'));
    ;

    多行子查询

    --any任意一个
    --all所有
    --例7:查询工资高于 任何一个 CLERK的所有员工的员工信息
      --单行子查询方式:

    • select * from emp where sal>(select min(sal) from emp where job='CLERK') order by empno;

      --多行子查询方式:

    • select * from emp where sal> any(select sal from emp where job='CLERK')order by empno;

    --例8:查询工资高于 所有 SALESMAN的员工信息
      --单行子查询方式

    • select * from emp where sal>(select max(sal) from emp where job='SALESMAN') order by empno;

      --多行子查询方式

    • select * from emp where sal >all(select sal from emp where job='SALESMAN') order by empno;

    in关键字

    in相当于 =any

    例如   select * from emp where deptno in(10,20);

  • 相关阅读:
    SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)
    Web Api 跨域解决方案
    Web Api Session开启会话支持
    Web Service 学习
    省市选择器
    如何创建圆形头像和圆角图片
    E
    二叉树
    素数筛法
    Color Me Less
  • 原文地址:https://www.cnblogs.com/Scorpicat/p/12299256.html
Copyright © 2020-2023  润新知