假如现在有一个表,七个字段 如 T(A,B,C,D,E,F,G)数据为1,1,1,1,1,1,11,1,1,1,2,1,12,2,2,2,2,2,22,3,2,2,2,2,23,3,3,3,3,3,34,4,4,4,4,4,4我需要找到疑似的重复记录, 重复的条件是 A,B,C,D字段值相同,其他字段有不同 或A,C,E,F字段值相同,其他字段有不同现在的做法是做...
显示全部假如现在有一个表,七个字段 如 T(A,B,C,D,E,F,G)
数据为
1,1,1,1,1,1,1
1,1,1,1,2,1,1
2,2,2,2,2,2,2
2,3,2,2,2,2,2
3,3,3,3,3,3,3
4,4,4,4,4,4,4
我需要找到疑似的重复记录, 重复的条件是 A,B,C,D字段值相同,其他字段有不同 或A,C,E,F字段值相同,其他字段有不同
现在的做法是做自表关联,因为表很大所以效率很差
SELECT * FROM T t1 inner join T t2 on t1.A=t2.A and t1.C=t2.C
where (t1.B=t2.B and t1.D=t2.D and (t1.E<>t2.E or t1.F<>t2.F or t1.G<>t2.G)) or (t1.E=t2.E and t1.F=t2.F and (t1.B<>t2.B or t1.D<>t2.D or t1.G<>t2.G))
自表关联的时候很大的数据量关联都发生在相同的物理行上,有没有好的方法在关联的时候比较方便地排除掉相同物理行的关联,好像物理行号不能直接取吧?
或者有什么好的办法可以解决这样的问题吗
收起