2016-12-29 79 views
-1

我一直想要在單個查詢中更新第1行的列'first name'和第2行的'dept_id'列。可以做到嗎? **中的那個是我想更新的那個。使用單個查詢更新不同行中的不同列

last_name  first_name  dept_id 
jerry   tom   **50** 
snow   **black**   20 


UPDATE EMP2_5 
SET dept_id = '50' where last_name = 'jerry' 
UPDATE EMP2_5 
SET first_name = 'black' where last_name = 'snow' 

回答

1

可以做一個單一的查詢,但如果你有每一行的唯一標識符它將幫助。對於給定的數據,你可以使用任何柱:

update t 
    set first_name = (case when last_name = 'snow' then 'black' else first_name end), 
     dept_id = (case when last_name = 'jerry' then 50 else dept_id end) 
    where last_name in ('jerry', 'snow'); 

commit; 

然而,兩個獨立update s的簡單多了,我想:

update t 
    set first_name = 'black' 
    where last_name = 'snow'; 

update t 
    set dept_id = 50 
    where last_name = 'jerry'; 

commit; 
+0

出現了缺少關鍵字的錯誤爲單查詢 – Jane

+0

@gordon你在第一個'case'中錯過了'end' –

+0

嗨它工作,謝謝 – Jane

相關問題