这是sybase里的写法UPDATE M_IMPORT_ITEM_H004 
SET CENTER_ID=A.ITEM_CODE ,ITEM_CLASS=A.ITEM_CLASS 
FROM T_CONTRAST_H004 A, M_IMPORT_ITEM_H004  B 
WHERE   
A.ITEM_STYLE=B.CATALOG_CLASS  
AND  B.ITEM_CODE=A.ITEM_ID在Oracle里没有Update from的写法
该怎么写?
UPDATE M_IMPORT_ITEM_H004 A
SET (CENTER_ID,ITEM_CLASS) =(
select (A.ITEM_CODE,A.ITEM_CLASS)
FROM T_CONTRAST_H004 A ,M_IMPORT_ITEM_H004 B   
WHERE A.ITEM_STYLE=B.CATALOG_CLASS 
AND B.ITEM_CODE=A.ITEM_ID)这样写 它报缺少右括号

解决方案 »

  1.   

    update m_import_item_h004 t1
    set (t1.center_id,t1.item_class)=(select t2.item_code, t2.item_class
       from T_CONTRAST_H004 t2
      where t2.item_style=t1.catalog_class and t2.item_id=t1.item_code)
    where exists ( select 1 from T_CONTRAST_H004 t3 
    where t3.item_style=t1.catalog_class and t3.item_id=t1.item_code);
      

  2.   

    如果
    FROM T_CONTRAST_H004 A, M_IMPORT_ITEM_H004  B     
    WHERE       
    A.ITEM_STYLE=B.CATALOG_CLASS  
    AND     B.ITEM_CODE=A.ITEM_ID
    产生多条记录,就不能更新的。一般都是要和更新表M_IMPORT_ITEM_H004有连接条件的,不然何如确定更新的是
    这个表的哪个列
      

  3.   

    UPDATE M_IMPORT_ITEM_H004 A
    SET (CENTER_ID,ITEM_CLASS) =(
    select (B.ITEM_CODE,B.ITEM_CLASS)
    FROM T_CONTRAST_H004 B 
    WHERE A.ITEM_STYLE=B.CATALOG_CLASS 
    AND B.ITEM_CODE=A.ITEM_ID)
    where exists(select 1 from T_CONTRAST_H004 C where A.ITEM_STYLE=C.CATALOG_CLASS 
    AND C.ITEM_CODE=A.ITEM_ID)--后面加个where exists(select 1 from T_CONTRAST_H004 C where A.ITEM_STYLE=C.CATALOG_CLASS 
    AND C.ITEM_CODE=A.ITEM_ID) 是防止把不符合的也更新了,只更新M_IMPORT_ITEM_H004 在T_CONTRAST_H004符合的
      

  4.   

    楼上的
    UPDATE M_IMPORT_ITEM_H004 A
    SET (CENTER_ID,ITEM_CLASS) =(
    select (B.ITEM_CODE,B.ITEM_CLASS)
    FROM T_CONTRAST_H004 B 
    WHERE A.ITEM_STYLE=B.CATALOG_CLASS 
    AND B.ITEM_CODE=A.ITEM_ID)
    where exists(select 1 from T_CONTRAST_H004 C where A.ITEM_STYLE=C.CATALOG_CLASS 
    AND C.ITEM_CODE=A.ITEM_ID)
      

  5.   

    Update每次只能更新一条数据如果Select多条数据就会报错。。
      

  6.   

    考虑下 merge into  MERGE [INTO [schema .] table [t_alias]  USING [schema .] { table | view | subquery } [t_alias]  ON ( condition )  WHEN MATCHED THEN merge_update_clause  WHEN NOT MATCHED THEN merge_insert_clause;
      

  7.   

    --也可以用10g以上的merge into a using b......
    merge into M_IMPORT_ITEM A using T_CONTRAST_H004 B on(A.ITEM_STYLE=B.CATALOG_CLASS  
    AND B.ITEM_CODE=A.ITEM_ID)
    when matched then update set A.CENTER_ID=B.ITEM_CODE ,A.ITEM_CLASS=B.ITEM_CLASS