比如一张表的记录中有两条是ID  CAPTION      ADDRESS
X1  郑州市卫生局    111
001  郑州市卫生局   222




 查找表中ID是X开头的,并且CAPTION 有重复的(最多两个重复,不可能出现三个有 郑州市卫生局的记录)  把那个记录的值赋予ID是X1的
执行完应该是ID  CAPTION      ADDRESS
001  郑州市卫生局   222
001  郑州市卫生局   222

解决方案 »

  1.   

    try it ..
    update TABLENAME T1
         set (T1.id, T1.ADDRESS) = (select T2.id,
                                           T2.ADDRESS
                                      from TABLENAME T2
                                     where T1.id <> T2.id
                                       and T1.CAPTION = T2.CAPTION)
       where substr(T1.id ,1,1) = 'X';
      

  2.   

    to mantisXF 
    你的语句我执行后提示
    ORA-01407:无法更新,,,,,,为NULL的错误提示,请问是怎么回事呢?多谢
      

  3.   

    试试下面的:
    UPDATE TABLENAME T1
       SET (T1.ID, T1.ADDRESS) = (SELECT T2.ID, T2.ADDRESS
                                    FROM TABLENAME T2
                                   WHERE T1.ID <> T2.ID
                                     AND T1.CAPTION = T2.CAPTION)
     WHERE SUBSTR(T1.ID, 1, 1) = 'X'
       AND EXISTS (SELECT NULL
              FROM TABLENAME T3
             WHERE T1.ID <> T2.ID
               AND T3.CAPTION = T1.CAPTION);
      

  4.   

    TO oracledbalgtu 
    照你发的sql 可以了,十分感谢。能大概讲讲思路吗?