IT其它SQL

一个查找重复数据的问题

假如现在有一个表,七个字段 如 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))

自表关联的时候很大的数据量关联都发生在相同的物理行上,有没有好的方法在关联的时候比较方便地排除掉相同物理行的关联,好像物理行号不能直接取吧?
或者有什么好的办法可以解决这样的问题吗收起
参与3

查看其它 1 个回答huangbin2006333的回答

huangbin2006333huangbin2006333技术支持北京中软国际信息技术有限公司
--查询 表 重复数据

select count(*) FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY 重复字段) AS RN FROM 表名)A WHERE A.RN > 1 with ur;
互联网服务 · 2014-03-27
浏览546

回答者

huangbin2006333
技术支持北京中软国际信息技术有限公司
擅长领域: AIX服务器Unix

huangbin2006333 最近回答过的问题

回答状态

  • 发布时间:2014-03-27
  • 关注会员:1 人
  • 回答浏览:546
  • X社区推广