SQL经典实例(第2版)
上QQ阅读APP看书,第一时间看更新

1.3 查找满足多个条件的行

  1. 问题

    你想返回满足多个条件的行。

     

  2. 解决方案

    结合使用 WHERE 子句、OR 子句和 AND 子句。例如,要查找部门编号为 10 的员工、有业务提成的员工以及薪水不超过 2000 美元且部门编号为 20 的员工,可以像下面这样做。

    1 select *
    2   from emp
    3  where deptno = 10
    4     or comm is not null
    5     or sal <= 2000 and deptno=20

     

  3. 讨论

    要返回满足多个条件的行,可以结合使用 ANDOR 和圆括号。在上述解决方案中,WHERE 子句查找满足下面任何一个条件的行:

    • DEPTNO 为 10;
    • COMM 不为 NULL
    • 薪水不超过 2000 美元且 DEPTNO 为 20。

    圆括号指定将多个条件作为一个整体。

    例如,下面是将前 3 个条件放在圆括号内时返回的结果集。

    select *
     from emp
    where (     deptno = 10
            or comm is not null
            or sal <= 2000
          )
      and deptno=20
    
    EMPNO ENAME  JOB     MGR  HIREDATE      SAL       COMM  DEPTNO
    ----- ------ ----- -----  ----------- ----- ----------  ------
     7369 SMITH  CLERK  7902  17-DEC-1980   800                 20
     7876 ADAMS  CLERK  7788  12-JAN-1983  1100                 20