我是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。我该怎么做呢?我不确定如何开始这个。
答案 0 :(得分:1)
select * from employees
where employee_id not in ( select employee_id from job_history)
/
答案 1 :(得分: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
答案 2 :(得分:-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