NATURAL JOIN
是一种 SQL 连接类型,它会自动基于两个表中具有相同名称的列进行连接。使用NATURAL JOIN
时,不需要显式指定连接条件。它会帮你自动查询两张连接表中 所有相同的字段 ,然后进行 等值连接
两表都有 manager_id 和 department_id selectlast_name,department_name,employee_id
fromemployees eJOIN departments d ON e.department_id = d.department_idAND e.manager_id = d.manager_id;NATURAL JOINselectlast_name,department_name,employee_id
from employees eNATURAL JOIN departments d;
EXISTS
关键字可以直接在WHERE
子句后面使用,不需要加限定词。在这个查询中,
EXISTS
子句检查子查询是否返回至少一行数据。如果子查询返回至少一行数据,则EXISTS
返回TRUE
,否则返回FALSE
。示例解释
- 主查询:从
t_dept
表中选择deptName
。- 子查询:从
t_emp
表中选择所有deptId
等于主查询中t_dept
表的id
的记录。- EXISTS:如果子查询返回至少一行数据,则主查询返回该部门的
deptName
。- 用法:
EXISTS
用于检查子查询是否返回至少一行数据。- 适用场景:当需要检查某个条件是否存在时,使用
EXISTS
更为合适。EXISTS
通常用于关联子查询。- 性能:
EXISTS
在处理大型结果集时通常比IN
更高效,因为它在找到第一条匹配记录后就会停止搜索。
select *
from employees e
WHERE
EXISTS (
SELECT 1
from departments d
WHERE
e.department_id = d.department_id
)