題目描述
獲取所有非manager的員工emp_no
方法一:
使用not in選出在employees但不在dept_manager中的emp_no記錄
select a.emp_no
from employees a
where a.emp_no not in (select b.emp_no from dept_manager b)
方法二:
先使用left join 連線兩張表,再從此表中選出dept_no 值為null對應的emp_no記錄
select emp_no from (select * from employees left join dept_manager
on employees.emp_no = dept_manager.emp_no) where dept_no is null;
說到這裡其實還沒完,方法二中加粗的on,當替換成where就一直報錯,原因在於使用 left join時on 和 where 的用法區別如下:
1.on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。
2.where條件是在臨時表生成好後,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左邊表的記錄)。條件不為真的就全部過濾掉。
獲取所有非manager員工當前的薪水情況
獲取所有非manager員工當前的薪水情況,給出dept no emp no以及salary 當前表示to date 9999 01 01 create table dept emp emp no int 11 not null,dept no char 4 not null,from date d...
獲取所有員工當前的manager
獲取所有員工當前的manager,如果當前的manager是自己的話結果不顯示,當前表示to date 9999 01 01 結果第一列給出當前員工的emp no,第二列給出其manager對應的manager no。create table dept emp emp no int 11 not n...
獲取所有員工當前的manager
獲取所有部門當前manager的當前薪水情況,給出dept no,emp no以及salary,當前表示to date 9999 01 01 create table dept manager dept no char 4 not null,emp no int 11 not null,from d...