# 目标
掌握 EXISTS 和 IN关键字的使用
关联子查询中 子查询的每一次结果 都需要主查询传递一个值 供子查询运算
应用场景
使用 EXISTS:
当你只关心子查询是否至少返回一行,而不关心返回了多少行时。
当子查询可能返回大量数据,但只需要确认存在性时。
当你想要优化查询性能,避免不必要的数据加载和处理时。
使用 IN:
当你需要检查外层查询中的值是否在子查询返回的一组值中时。
当你需要确保外层查询的值与子查询返回的值完全匹配时
案例1
- 了解sql语句的执行顺序,以及理解多行子查询的含义
#查询出谁比自身部门平均工资高
案例2
- 理解EXISTS关键字
- 由于数据库中多行子查询中频繁出现 = any或者in关键字 会导致查询效率降低
- 所以数据库提供了一个新的关键字解决该问题 exists
- exists关键字 为了提高效率 只判断是否存在 是一个布尔值判断 不需要子查询返回列
- WHERE EXISTS (...)
这是一个条件表达式,用于检查括号内的子查询是否返回至少一行数据。如果子查询返回至少一行,那么 EXISTS 条件为真,外层查询的相应行将被包括在结果集中。
谁与john同部门
SELECT employee_id,first_name,department_id FROM employees
WHERE department_id IN
(SELECT department_id FROM employees WHERE first_name = 'John');
SELECT employee_id,first_name,department_id FROM employees e1
WHERE EXISTS
(SELECT 1 FROM employees e2
WHERE first_name = 'John' AND e1.`department_id` = e2.`department_id`);
评论 (0)