merge into 的用法

已创建 1 行。
 
SQL> commit;
 
----不带where子句
SQL>  merge into merge1
  2     using merge2
  3   on (merge1.id = merge2.id)
  4   when matched then
  5     update
  6    set merge1.name = merge2.name;
 
3 行已合并。
 
SQL> rollback;
 
回退已完成。
 
---带where子句
SQL>   merge into merge1 a
  2    using merge2 b
  3   on (a.id = b.id)
  4   when matched then
  5    update
  6    set a.name = b.name
  7   where a.name <> b.name;
 
0 行已合并。
 
------如果要更新b表,这样写会出错
SQL>    merge into merge1 a
  2     using merge2 b
  3    on (a.id = b.id)
  4    when matched then
  5     update
  6     set b.name = a.name;
   set b.name = a.name
       *
第 6 行出现错误:
ORA-00904: "B"."NAME": 标识符无效
----------------------------------------

;MERGE INTO Loanee p
USING ( SELECT * FROM @TApply AS nc) c on p.ApplicationID=c.ApplicationID
WHEN MATCHED THEN UPDATE set p.UpdateTime=getdate()
WHEN NOT MATCHED BY TARGET THEN INSERT
(
LoaneeNumber,LoaneeName,LoanDate,LockMatchRatio,SurplusMatchRatio,
MatchRatio,MatchAmount,LockAmount,LoaneeAmount,ExpectedYield,
LoanPeriod,CreditRating,FreeState,UpdateTime,AddTime,
DeleteState,IsFullState,FullTime,LoaneeType,ApplicationID,
CashAccountNo,ContractTime,RelaseRatio,MatchOrder,KsshDate,
LockState,CashAccountNo_Name,loaneeSource,Broker_CashAccount,Broker_CashAccountName,ApprovalTime)
VALUES(
c.LoaneeNumber,c.[LoaneeName],c.[LoanDate],0,1,
0,0,0,c.[LoaneeAmount],c.[ExpectedYield],
c.[LoanPeriod],c.[CreditRating],0,getdate(),getdate(),
0,0,null,0,c.[ApplicationID],
c.[CashAccountNo],c.[ContractTime],0,c.[MatchOrder],[KsshDate],
0,c.[CashAccountNo_Name],0,c.[Broker_CashAccount],c.[Broker_CashAccountName],c.ApprovalTime
);

以上例子的作用就是,向一个表中插入数据时,判断是否存在,不存在则插入,存在则更新
 
 
 

转载于:https://www.cnblogs.com/yangjinwang/p/4801681.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值