我在下面运行了查询,以显示在多伦多工作的所有员工的姓氏、工作、部门编号和部门名称。
表结构是这样的
- 员工(employee_id、last_name、department_id、...)
- 部门(department_id、department_name、location_id...)
- 位置(location_id,城市,...)
使用 ON 和 USING 子句,它返回两个结果行和
使用 NATURAL JOIN 子句,它只返回一个。
有什么区别,我用自然连接错误查询它吗?
开启
SELECT
e.last_name,
e.job_id,
d.department_name,
l.city
FROM employees e
JOIN departments d ON e.department_id= d.department_id
JOIN locations l ON d.location_id=l.location_id
WHERE upper(l.city)='TORONTO';
使用
SELECT
e.last_name,
e.job_id,
d.department_name,
l.city
FROM employees e
JOIN departments d USING(department_id)
JOIN locations l USING(location_id)
WHERE upper(l.city)='TORONTO';
自然加入
SELECT
last_name,
job_id,
department_name,
city
FROM employees
NATURAL JOIN departments
NATURAL JOIN locations
WHERE upper(city)='TORONTO';