按A表的字段1,字段2查询B表,若有记录中有相同的字段1值,字段2值则用A表此记录值更新B表记录,否则插入A表记录到B表,假设两表字段一样。。

解决方案 »

  1.   


    merge into B
    using A
    on(B.字段1=A.字段1 and B.字段2=A.字段2)
    when matched then
    update set B.xxx=A.xxx,B.xxx=A.xxx,....
    when not matched then
    insert into values(A.xxx,A.xxx,....);
      

  2.   


    update b set (c1,c2...,cn) = (select c1,c2...cn from a where 字段1 = b.字段1 and 字段2 = b.字段2) where exists (select 1 from a where 字段1 = b.字段1 and 字段2 = b.字段2)insert into b select * from a where not exists (select 1 from a where 字段1 = b.字段1 and 字段2 = b.字段2)
      

  3.   

    有一点我忘说了。A表是用的OLDEB接入的EXCEL表单。。
    B表是ORACLE数据库中的表。
    JET-SQL支不支持1,2楼的方法
      

  4.   

    SQL SERVER 可以用 OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)当外部表但是在ORACLE中我使用oraclecmd执行这个select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$) 
    会报错,SQL语句没有正常结束
    求救 !!!!
      

  5.   


    sql server的语法,在oracle中不适用楼主可以考虑用外部表
      

  6.   

    select * fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$) 
    这个不是外部表吗????