我在下面运行查询以显示姓氏, 所有在职员工的工作,部门编号和部门名称 多伦多。
表结构就像这样
使用ON和USING子句,它返回两行结果和
使用NATURAL JOIN子句只返回一个。
有什么区别,我用自然连接错误查询吗?
使用ON
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';
使用NATURAL JOIN
SELECT
last_name,
job_id,
department_name,
city
FROM employees
NATURAL JOIN departments
NATURAL JOIN locations
WHERE upper(city)='TORONTO';
答案 0 :(得分:4)
我猜你在oracle中使用了HR模式。员工和部门都有一个您没有加入的字段mangager_id。但是自然联接会加入它们。