如果你(因爲你寫的)手頭的「僱員」表,您可以從中選擇3列,並創建一個新的表像這樣:
create table ls
as
select
employee_id
, last_name
, department_id
from employees;
請注意,這是一個組合一個SELECT和一個CREATE TABLE。按照......選擇首先執行的思路,其輸出用於「寫入」稱爲ls的新表。
現在,你可以嘗試這樣的事情(下面的查詢說明):
select *
from ls
where department_id = (
select department_id
from ls
where last_name = 'De Haan'
)
;
看(主查詢)WHERE子句。 department_id必須與名字爲'De Haan'的人工作的department_id相等。首先,子查詢(寫在圓括號中)選擇一個department_id。這個department_id然後在主查詢的WHERE中使用。在主查詢中使用「相等」符號時,子查詢必須返回一個值。您可以嘗試這一點通過自身即
select department_id from ls where last_name = 'De Haan';
運行子查詢如果你的子查詢返回多個值,使用IN(...),例如
select *
from ls
where department_id in (
select department_id
from ls
where last_name = 'King'
)
;
您可以使用Oracle的APEX( apex.oracle.com)如果你需要一個練習環境。只需要一個工作區。
補遺(實施例2頁涉及的表):假設,在後一階段中,我們發現,對LS表需要一salary列,所以我們添加一個。
alter table ls
add salary number ;
這一欄是空的 - 通過執行檢查:
select * from ls;
現在,我們希望從員工表中的原始工資值來填充新列。我們可以爲此使用子查詢。請注意,UPDATE沒有WHERE子句,即它將更新所有行。 SELECT的WHERE子句與2個表的employee_id匹配。
update ls
set salary = (
select salary
from employees
where ls.employee_id = employees.employee_id
)
;
運行檢查,使用內加入(全 「差異」 必須爲0):
select
employees.employee_id
, employees.salary
, ls.salary
, employees.salary - ls.salary difference
from employees join ls on (employees.employee_id = ls.employee_id) ;
抱歉,SO不是輔導服務。 – OldProgrammer
也許嘗試hackhands,如果你需要Skype /逐行解釋。 – artm
誰或手什麼? – brtnremtp