MERGE INTO sites_info sites
USING DOMAIN_ALEXA_INFO alexa
ON (alexa.main_domain = sites.main_domain and sites.status = 40 and alexa.status = 100)
WHEN MATCHED THEN
  UPDATE SET sites.SITE_LANGUAGE_TYPE = alexa.SITELANGUAGETYPE
这样报缺少关键字 错误
数据是9R2我又这样改了 :MERGE INTO sites_info sites
USING DOMAIN_ALEXA_INFO alexa
ON (alexa.main_domain = sites.main_domain and sites.status = 40 and alexa.status = 100)
WHEN MATCHED THEN
  UPDATE SET sites.SITE_LANGUAGE_TYPE = alexa.SITELANGUAGETYPE
  WHEN NOT MATCHED THEN
  select 1 from dual可还是报同样的错误 !我要的效果是根据 a 去更新b 表,当存在相应匹配时  !其它情况不用处理

解决方案 »

  1.   

    WHEN NOT MATCHED THEN
    INSERT ...
      

  2.   

    可我不想Insert ,有没有什么其它办法 
      

  3.   

    9i版本的merge里面必须有when not matched then insert ..部分
    可以不用merge 
    update sites_info sites set sites.SITE_LANGUAGE_TYPE=
    (select alexa.SITELANGUAGETYPE from DOMAIN_ALEXA_INFO alexa
    where alexa.main_domain = sites.main_domain and sites.status = 40 and alexa.status = 100)
    where exists(select 1 from DOMAIN_ALEXA_INFO alexa
    where alexa.main_domain = sites.main_domain and sites.status = 40 and alexa.status = 100)
      

  4.   

    有,就是不用merge直接用update
      

  5.   

    update sites_info sites set sites.SITE_LANGUAGE_TYPE= 
    (select alexa.SITELANGUAGETYPE from DOMAIN_ALEXA_INFO alexa 
    where alexa.main_domain = sites.main_domain and alexa.status = 100) 
    where exists(select 1 from DOMAIN_ALEXA_INFO alexa 
    where alexa.main_domain = sites.main_domainand alexa.status = 100)
     and sites.status = 40 
      

  6.   


    update sites_info sites
       set sites.SITE_LANGUAGE_TYPE = (select alexa.SITELANGUAGETYPE
                                         from DOMAIN_ALEXA_INFO alexa
                                        where alexa.main_domain =
                                              sites.main_domain
                                          and alexa.status = 100)
     where exists
     (select 1
              from DOMAIN_ALEXA_INFO alexa
             where alexa.main_domain = sites.main_domainand alexa.status = 100)
       and sites.status = 40
    报缺少右括号 ,还有那个  where exists为什么放在这里
      

  7.   

    对,oracle9i中的merge有严格的语法限制,到了10g就明显少了很多限制 ,而且用起来更灵活了