比较简单的方式是在其中一个表临时加一个字段,交换完成后再把新增的字段删除
ALTER TABLE A ADD B NUMBER(22);--根据B表B字段类型添加,假设为number(22)
UPDATE A SET B=A,A=(SELECT B FROM B WHERE B_ID=A.A_ID)
UPDATE B SET B=(SELECT B FROM A WHERE A_ID=B.B_ID)
COMMIT;
ALTER TABLE A DROP COLUMN B;

解决方案 »

  1.   

    你的需求没有必要一条语句搞定.最好有个中间表C.
    当然如果a字段,b字段都是数值,也可以
    update A set a=a+(select b from B where B_ID=A.A_ID );
    update B set b=-b+(select a from A where A_ID=B.B_ID );
    update A set a=a-(select b from B where B_ID=A.A_ID );
    commit;
      

  2.   

    这肯定是需要一个临时表或者临时字段的。例如临时表C,A给C,B给A,C再给B;临时字段,是在A或者B添加要对方交换的字段,交换完再删去这个新增的字段。