我知道MERGE INTO是合并UPDATE和INSERT的语法,WHEN MATCHED THEN UPDATE, WHEN NOT MATCHED THEN INSERT,有没有类似的语法能实现合并UPDATE和DELETE的语法啊,就像WHEN MATCHED THEN UPDATE, WHEN NOT MATCHED THEN DELETE。不知道我描述清楚没有,求高手解答啊谢谢,加急

解决方案 »

  1.   

    WHEN NOT MATCHED THEN DELETE首先想想可行否  删除你靠什么删除 的有思想
      

  2.   


    通过查询技巧使得无论怎么样都能匹配上(比如一个left join)
    然后根据delete 的where 条件决定删除哪些。
      

  3.   

    这个只能用触发器去实现,不能用merge...into!
      

  4.   

    create table TTA
    (AID   VARCHAR2(40),ANAME VARCHAR2(40));create table TTB
    (BID   VARCHAR2(40),BNAME VARCHAR2(40));insert into TTA (AID, ANAME) values ('1', '关');
    insert into TTA (AID, ANAME) values ('2', '张');
    insert into TTA (AID, ANAME) values ('3', '赵');
    insert into TTA (AID, ANAME) values ('4', '马');
    insert into TTA (AID, ANAME) values ('5', '黄');insert into TTB (BID, BNAME) values ('1', null);
    insert into TTB (BID, BNAME) values ('2', null);
    insert into TTB (BID, BNAME) values ('3', null);
    insert into TTB (BID, BNAME) values ('4', null);
    insert into TTB (BID, BNAME) values ('5', null);
    insert into TTB (BID, BNAME) values ('6', null);
    insert into TTB (BID, BNAME) values ('7', null);
    commit;
    merge into ttb b
       using  (select aid, aname, bid, bname from tta right join ttb on tta.aid = ttb.bid) ab 
       on (b.bid = ab.bid)
       
       when matched then
          update set bname = ab.aname
          delete where ab.aid is null