现在有3个表,A,B,C 三个表的结构如下:
A: A_ID number(9)  A_STATUS varchar2(10)  A_TYPE varchar2(10) 
B: B_ID number(9)  A_ID number(9)         B_VALUE varchar2(10)    B_CREATEDATE date
C: C_ID number(9)  B_ID number(9)         C_DATE date
可以看出,这3个表之间的关联 A.A_ID=B.A_ID   B.B_ID=C.B_ID
我需要找出重复的记录,三个表需要关联起来比较,3个表中都一样才算重复,所谓的重复记录,并非所有字段完全相同,B_CREATEDATE 可以不同,ID可以不同,其他的都要相同,然后只保留相同记录中B_CREATEDATE最晚的一条,其它的更改 A_STATUS 为"false",我的数据库为ORACLE,请问在JAVA中该如何做

解决方案 »

  1.   

    用group by 分组 然后 根据每条记录的COUNT数 来判断他是否重复
      

  2.   

    下面是个删除重复记录的sql,供你参考delete userInfo as a from userInfo as a,(select *,min(id) from userInfo group by yourDuplicateField having count(*) > 1) as b where a.yourDuplicateField = b.yourDuplicateField and a.id > b.id;