结果集只有一列多行

    操作符 含义
    INNOT IN 等于列表中的任意一个。
    ANYSOME 和子查询返回的某一个值比较,不推荐用。
    和中文思维理解有歧义。
    ALL 和子查询返回的所有值比较。不推荐用。
    和中文思维理解有歧义。
    1. -- 案例1:返回location_id14001700的部门中的所有员工姓名
    2. -- ①查询location_id14001700的部门编号
    3. SELECT DISTINCT department_id
    4. FROM departments
    5. WHERE location_id IN(1400,1700)
    6. -- ②查询员工姓名,要求部门号是①列表中的某一个
    7. SELECT last_name
    8. FROM employees
    9. WHERE department_id <>ALL(
    10. SELECT DISTINCT department_id
    11. FROM departments
    12. WHERE location_id IN(1400,1700)
    13. );
    14. -- 案例2:返回其它工种中比job_id为‘IT_PROG’工种任一工资低的员工的员工号、姓名、job_id 以及salary
    15. -- ①查询job_id为‘IT_PROG’部门任一工资
    16. SELECT DISTINCT salary
    17. FROM employees
    18. WHERE job_id = 'IT_PROG'
    19. -- ②查询员工号、姓名、job_id 以及salarysalary<(①)的任意一个
    20. SELECT last_name,employee_id,job_id,salary
    21. FROM employees
    22. WHERE salary<ANY(
    23. SELECT DISTINCT salary
    24. FROM employees
    25. WHERE job_id = 'IT_PROG'
    26. ) AND job_id<>'IT_PROG';
    27. --
    28. SELECT last_name,employee_id,job_id,salary
    29. FROM employees
    30. WHERE salary<(
    31. SELECT MAX(salary)
    32. FROM employees
    33. WHERE job_id = 'IT_PROG'
    34. ) AND job_id<>'IT_PROG';
    35. -- 案例3:返回其它部门中比job_id为‘IT_PROG’部门所有工资都低的员工 的员工号、姓名、job_id 以及salary
    36. SELECT last_name,employee_id,job_id,salary
    37. FROM employees
    38. WHERE salary<ALL(
    39. SELECT DISTINCT salary
    40. FROM employees
    41. WHERE job_id = 'IT_PROG'
    42. ) AND job_id<>'IT_PROG';
    43. --
    44. SELECT last_name,employee_id,job_id,salary
    45. FROM employees
    46. WHERE salary<(
    47. SELECT MIN( salary)
    48. FROM employees
    49. WHERE job_id = 'IT_PROG'
    50. ) AND job_id<>'IT_PROG';