exists()判断结果是否有没有。只返回1/0。但是大部分都可以使用IN代替。

    1. /*
    2. 语法:
    3. exists(完整的查询语句)
    4. 结果:
    5. 1或0
    6. */
    7. SELECT EXISTS(SELECT employee_id FROM employees WHERE salary=300000);
    8. -- 案例1:查询有员工的部门名
    9. -- in
    10. SELECT department_name
    11. FROM departments d
    12. WHERE d.`department_id` IN(
    13. SELECT department_id
    14. FROM employees
    15. )
    16. -- exists
    17. SELECT department_name
    18. FROM departments d
    19. WHERE EXISTS(
    20. SELECT *
    21. FROM employees e
    22. WHERE d.`department_id`=e.`department_id`
    23. );
    24. -- 案例2:查询没有女朋友的男神信息
    25. -- in
    26. SELECT bo.*
    27. FROM boys bo
    28. WHERE bo.id NOT IN(
    29. SELECT boyfriend_id
    30. FROM beauty
    31. )
    32. -- exists
    33. SELECT bo.*
    34. FROM boys bo
    35. WHERE NOT EXISTS(
    36. SELECT boyfriend_id
    37. FROM beauty b
    38. WHERE bo.`id`=b.`boyfriend_id`
    39. );