0

我对 oracle sql 和编程非常陌生,我需要一些帮助来完成我的第一个项目。我正在使用这个表模式:

Column  Data Type   Length  Precision   Scale   Nullable
EMPLOYEE_ID NUMBER    22      6           0        No
START_DATE  DATE      7        -          -        No
END_DATE    DATE      7        -          -        No
JOB_ID     VARCHAR2   10       -          -        No
DEPARTMENT_ID   NUMBER  22     4          0        Yes

我想显示所有从未换过工作的员工,甚至一次都没有(上表中未列出的员工) 此表标记为 job_history。我该怎么做呢?我不确定如何开始。

4

3 回答 3

1
select * from employees
where employee_id not in ( select employee_id from job_history)
/
于 2013-03-29T00:24:39.167 回答
1

您可以使用左连接并检查 job_history 表上的 null employee_id。

select * from employees 
left join job_history 
on job_history.employee_id = employees.employee_id 
where job_history.employee_id is NULL
于 2013-03-29T00:27:36.160 回答
-1

执行计划通常更适合

select * from employees e where not exists 
  (select 1 from job_history jh.employee_id = e.employee_id)

比“不在()中”。如果表格具有相同的结构,最好的结果将是

select * from employees 
minus
select * from job_history 
于 2013-03-29T06:43:00.267 回答