日期:2014-05-17  浏览次数:21001 次

ORACKLE中的两个表的数据导入和导出
表A和表B结构完全一样。A表数据要更新到B表去。两表通过字段ID来关联。
  如果字段IMPORTDIRECTION=1,A.ID等于B.ID,则把A表中对应ID的那条数据update到B表去,然后把A表中的字段IMPORTDIRECTION修改成4.
  如果字段IMPORTDIRECTION=1,A.ID不等于B.ID,说明是新数据。则把A表中对应ID的那条数据insert into到B表去,然后把A表中的字段IMPORTDIRECTION修改成4.请问下语句该如何写

------解决方案--------------------
一条语句恐怕不行
SQL code
MERGE INTO B
USING
(
  SELECT ID,COL_1,COL_2...
  FROM A
  WHERE A.IMPORTDIRECTION=1
)A
ON (B.ID=A.ID)
WHEN MATCHED THEN UPDATE SET 
  B.COL_1=A.COL_1,
  B.COL_2=A.COL_2,
  ...
WHEN NOT MATCHED THEN INSERT (ID,COL_1,COL_2...)
VALUE(A.ID,A.COL_2,...);

UPDATE A SET IMPORTDIRECTION=4;