oracle——merge用法

1

假設(shè)有兩個表,Employees(員工表)和NewHires(新入職員工表)。你想將NewHires表中的新員工信息合并到Employees表中,如果新員工已存在則更新其信息,如果不存在則插入新員工信息,并刪除Employees表中已離職的員工信息(假設(shè)離職狀態(tài)在Employees表中有標(biāo)記)。

MERGE INTO Employees AS E  
USING NewHires AS N  
    ON E.EmployeeID = N.EmployeeID  
WHEN MATCHED THEN  
    UPDATE SET E.Name = N.Name, E.StartDate = N.StartDate  
WHEN NOT MATCHED BY TARGET THEN  
    INSERT (EmployeeID, Name, StartDate)  
    VALUES (N.EmployeeID, N.Name, N.StartDate)  
WHEN MATCHED AND E.IsTerminated = 1 THEN  
    DELETE;

2

image.png
merge into student  s
using boy b on (s.id=b.id)
when matched then
update set s.name=b.name
when not matched then
insert values(b.id,b.name,'男');

3

在ON子句中,可以使用多個條件來更精確地控制哪些記錄應(yīng)該被合并。
假設(shè)你有兩個表,Orders(訂單表)和OrderDetails(訂單詳情表),你想根據(jù)訂單ID和客戶ID來更新訂單的總金額。

MERGE INTO Orders AS O  
USING (  
    SELECT OrderID, CustomerID, SUM(Quantity * Price) AS TotalAmount  
    FROM OrderDetails  
    GROUP BY OrderID, CustomerID  
) AS OD  
ON O.OrderID = OD.OrderID AND O.CustomerID = OD.CustomerID  
WHEN MATCHED THEN  
    UPDATE SET O.TotalAmount = OD.TotalAmount;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在開發(fā)中我們經(jīng)常會碰到這么一個場景,列如用戶修改簡單的個人基本信息,這個時候就需要判斷用戶的基本信息是否存在,如果...
    TryCatch菌閱讀 32,667評論 0 12
  • merge into的形式: 作用: 判斷B表和A表是否滿足ON中條件,如果滿足則用B表去更新A表,如果不滿足,則...
    鍵盤上的莊稼漢閱讀 125評論 0 0
  • MERGE運算能夠完成的任務(wù)使用INSERT、UPDATE和DELETE語句都能完成,但它傳遞一次源數(shù)據(jù),就能夠?qū)?..
    CheneyXYM閱讀 915評論 0 0
  • 一 merge使用說明當(dāng)需要對一個表根據(jù)不同條件分別進(jìn)行INSERT、UPDATE以及DELETE操作時,可以使用...
    zy_world閱讀 864評論 0 0
  • (一)Oracle數(shù)據(jù)庫 1.oracle中row_id理解 ORACLE的row_id是一個偽列,其個是為18個...
    獨云閱讀 5,736評論 0 10

友情鏈接更多精彩內(nèi)容