INSERT  into DOMAIN_ALEXA_INFO 
  (main_domain) values
  (select sites_info.main_domain
    from sites_info
   where not exists
   (select null
            from DOMAIN_ALEXA_INFO
           where DOMAIN_ALEXA_INFO.main_domain = sites_info.main_domain))这个报 缺少表达式的错
MERGE INTO DOMAIN_ALEXA_INFO alexa
USING SITES_INFO sites
on (alexa.main_domain = sites.main_domain)
WHEN MATCHED THEN
  UPDATE set alexa.main_domain = sites.main_domain
  
WHEN NOT MATCHED THEN
  INSERT
    (main_domain)
  values
    (sites.main_domain)
--这个报  alexa.main_domain 无效标识,可明明就有这属性    
上面两个代码就是要实现  如果  SITES_INFO 有main_domain的记录,而DOMAIN_ALEXA_INFO 不存在的,
就把此记录添加到 DOMAIN_ALEXA_INFO 表里去(存不存的断定的标识  main_domain  )

解决方案 »

  1.   

    建议给出你的 create table 语句,这样别人可以直接调试。
      

  2.   


     我以为逻辑蛮简单的,所以
    马上贴出
    create table SITES_INFO
    (
      MAIN_DOMAIN        VARCHAR2(160),
      HOST_NAME          VARCHAR2(160) not null,
      OUT_LINKS          NUMBER,
      LINKS              NUMBER,
      STATUS             NUMBER default 40,
      ALLCOUNT           NUMBER,
      FAILEDCOUNT        NUMBER,
      CREATE_DATE        DATE default sysdate,
      LAST_UPDATE_DATE   DATE default sysdate,
      CLIENT_ID          VARCHAR2(150),
      NUM1               NUMBER,
      NUM2               NUMBER,
      STR1               VARCHAR2(150),
      STR2               VARCHAR2(150),
      STR3               VARCHAR2(150),
      GRADE              NUMBER,
      INTERVALDAYS       NUMBER,
      SITE_LANGUAGE_TYPE NUMBER default 0
    )create table DOMAIN_ALEXA_INFO
    (
      MAIN_DOMAIN         VARCHAR2(160) not null,
      ALEXA_RANKING       NUMBER,
      CHINAALEXARANK      NUMBER,
      STATUS              NUMBER default 40,
      SITELANGUAGETYPE    NUMBER default 0,
      SITEOUTLINKS        NUMBER,
      SITEONLINEDATE      DATE,
      USERCOUNTRYINFO     VARCHAR2(300),
      SITEAVGSPEEDINFO    VARCHAR2(300),
      ATTEMPTTIMES        NUMBER,
      CREATE_DATE         DATE default sysdate,
      LAST_UPDATE_DATE    DATE default sysdate,
      NETGY_GRADE         NUMBER,
      INTERVAL_VISIT_DAYS NUMBER,
      CLIENT_ID           VARCHAR2(150),
      NUM1                NUMBER,
      NUM2                NUMBER,
      STR1                VARCHAR2(150),
      STR2                VARCHAR2(150),
      STR3                VARCHAR2(150)
    )
    关注main_domain 就可以 了,其它字段有些是保留 目前还没用到
      

  3.   

    INSERT  into DOMAIN_ALEXA_INFO 
      (main_domain)
      select sites_info.main_domain
        from sites_info
       where not exists
       (select NULL from DOMAIN_ALEXA_INFO
        where DOMAIN_ALEXA_INFO.main_domain = sites_info.main_domain);
    MERGE INTO DOMAIN_ALEXA_INFO alexa
    USING SITES_INFO sites
    on (alexa.main_domain = sites.main_domain)
    WHEN MATCHED THEN
      UPDATE set alexa.main_domain = sites.main_domain
    WHEN NOT MATCHED THEN
      INSERT
        (main_domain)
      values
        (sites.main_domain);
    语句非法。无法更新on子句引用列。
      

  4.   

    报错不一样?我版本为:
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
    PL/SQL Release 10.2.0.1.0 - Production
    CORE 10.2.0.1.0 Production
    TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
    NLSRTL Version 10.2.0.1.0 - Production