2015-07-21 160 views
0

我目前正在參加我在SQL中的第一門課程,並且遇到了一些問題。我現在試着解釋我正在嘗試做什麼。我有這個選擇語句正確顯示我需要的東西。當我嘗試將其轉換爲UPDATE語句時,出現了我的問題。開始SQL - 將一列的值添加到另一個表中的另一列

SELECT infobb02.uni+tempbb02.sal 
from infobb02 JOIN tempbb02 ON infobb02.empno=tempbb02.empno; 

在情況下,它並不明顯1M,在表tempbb02添加從表infobb02單向的值到SAL。我曾嘗試各種東西讓它是一個永久的更新,但不斷收到錯誤大多

任何幫助表示讚賞「不正確地結束SQL命令」!謝謝。

+0

oracle在語句結尾處不接受「分號」 –

+0

@vkp您在哪裏得到從?在我知道的每個Oracle CLI/GUI中,分號都用作語句終結符 - 包括PL/SQL。 – Boneist

回答

1

假設你的查詢是:

SELECT i.uni + t.sal 
FROM infobb02 i JOIN 
    tempbb02 t 
    ON i.empno = t.empno; 

如果要更新tempbb02,則:

update tempbb02 t 
    set t.sal = t.sal + 
       (select i.uni from infobb02 i where i.empno = t.empno) 
    where exists (select 1 from infobb02 i where i.empno = t.empno); 
0

而不是使用UPDATE語句時,你可以使用一個MERGE:

merge into tempbb02 tgt 
using infobb02 src 
    on (tgt.empno = src.empno) 
when matched then 
update set tgt.sal = tgt.sal + src.uni; 
+0

偉大這很容易遵循這裏發生的邏輯,謝謝! – neekluss

+0

對於涉及連接的更新,我通常更喜歡使用MERGE,因爲在UPDATE語句中,您需要兩次包含子查詢(當然,除非您要更新表中的所有行)。 * {:-) – Boneist

相關問題