oracle——merge用法

1

假设有两个表,Employees(员工表)和NewHires(新入职员工表)。你想将NewHires表中的新员工信息合并到Employees表中,如果新员工已存在则更新其信息,如果不存在则插入新员工信息,并删除Employees表中已离职的员工信息(假设离职状态在Employees表中有标记)。

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子句中,可以使用多个条件来更精确地控制哪些记录应该被合并。
假设你有两个表,Orders(订单表)和OrderDetails(订单详情表),你想根据订单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;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在开发中我们经常会碰到这么一个场景,列如用户修改简单的个人基本信息,这个时候就需要判断用户的基本信息是否存在,如果...
    TryCatch菌阅读 32,496评论 0 12
  • merge into的形式: 作用: 判断B表和A表是否满足ON中条件,如果满足则用B表去更新A表,如果不满足,则...
    键盘上的庄稼汉阅读 94评论 0 0
  • MERGE运算能够完成的任务使用INSERT、UPDATE和DELETE语句都能完成,但它传递一次源数据,就能够实...
    CheneyXYM阅读 864评论 0 0
  • 一 merge使用说明当需要对一个表根据不同条件分别进行INSERT、UPDATE以及DELETE操作时,可以使用...
    zy_world阅读 825评论 0 0
  • (一)Oracle数据库 1.oracle中row_id理解 ORACLE的row_id是一个伪列,其个是为18个...
    独云阅读 5,695评论 0 10