2017-10-19 193 views
0

在我正在閱讀的一本書中,它展示瞭如何合併來自2個不同表的記錄,這裏是下面的代碼,我相信這在Oracle SQL中。如何將Oracle MERGE語句轉換爲T-SQL語句?

merge into emp_commission ec 
using (select * from emp) emp 
    on (ec.empno=emp.empno) 
when matched then 
    update set ec.comm = 1000 
    delete where (sal < 2000) 
when not matched then 
    insert (ec.empno, ec.enme, ec.deptno, ec.comm) 
    values (emp.empno, emp.ename, emp.deptno, emp.comm) 

我試圖在SQL Server中運行,但我得到了MERGE語句必須用分號(;)結束 error.I添加了分號,但仍然得到同樣的錯誤。

+0

PL/SQL是一種與Oracle SQL緊密協作的過程式(命令式)編程語言。 MERGE語句是Oracle SQL(並且Oracle實現了MERGE的SQL標準定義和語法)。你在這裏有什麼**沒有與PL/SQL有關。瞭解PL/SQL不是** Oracle版本的SQL的名稱。我將編輯您的帖子以糾正此問題。 – mathguy

+1

那麼:那本書是什麼?有一件事立即突出:爲什麼使用(select * from emp)emp'?爲什麼不只是使用emp?如果這是本書的整體質量,那麼你不妨尋找另一本書。 – mathguy

+0

@mathguy本書是SQL Cookbook。感謝更新。 – Adaptron

回答

0
merge into emp_commission ec 
using (select * from emp) emp 
    on (ec.empno=emp.empno) 
when matched and 
sal < 2000 THEN 
delete 
when matched then 
    update 
    set ec.comm = 1000 
when not matched then 
    insert (empno, enme, deptno, comm) 
    values (emp.empno, emp.ename, emp.deptno, emp.comm); 
+0

@adaptron我更新了答案,插入行只能有沒有前綴的列名。 – DrHouseofSQL