我有一个表
A(a1,a2,a3)
例如
a1 a2 a3
3  4  1
6  9  1
2  3  1
2  3  2
2  3  3现在要做一个更新(更新a3),如果其中(a1+a2)(一个组合条件,并不是两个数相加)没有重复数据时,就在a3上记录为1,如果有就+1这样一直记录下去(如上图所示)!
有什么好的办法?

解决方案 »

  1.   

    UPDATE a
       SET a3 = ROW_NUMBER () OVER (PARTITION BY a1, a2 ORDER BY a1, a2)
    没试过,不过row_number应该可以满足,最多写法改一下
      

  2.   

    ROW_NUMBER 在我这里不能用, 报错: ORA-30483:WINDOW 函数在此禁用!
      

  3.   

    先挑选出不重复记录作为一个表,再通过(A1,A2)字段与这个表做关联去UPDATE A3
      

  4.   

    update table  a  set col3=col3+1 where (select count(*) from table b where b.col1=a.col1 and b.col2=a.col2)>1;
      

  5.   

    UPDATE a
       SET a3 = 
    (
    select 
    ROW_NUMBER () OVER (PARTITION BY b.a1, b.a2 ORDER BY b.a1, b.a2)
    from  a b
    where a.rowid=b.rowid)你这表不是知道PK是哪几个,反正肯定不是a1,a2
    最好是用主键做关联
      

  6.   

    ROW_NUMBER  这个函数在这里不能用, 还有这里的主健是(a4),但之所以我开始没有写出来,是因为我这里不会用到主健.
      

  7.   

    你是多少版本的ORACLE,难道是8的?