[英]How to find duplicated data group in Oracle
假设我有一个像这样的简单表:
f1 | f2
--------------
a | b
b | a
a | c
c | a
a | d
d | a
f1
和f2
本质上相似,它们之间的关系顺序无关紧要。 我的意思是如果我说a与b有关,那么b与a有关
我需要找到重复的关系并删除它们。 在这个例子中(a,b), (a,c), (a,d)
OR (b,a), (c,a), (d,a)
,这三个记录集之一应该被查找并且删除。
任何人请给我一个查找重复数据组的查询。
太感谢了
您可以使用exists
来展示“镜像”记录:
select t.*
from mytable t
where exists (select 1 from mytable t1 where t1.f1 = t.f2 and t1.f2 = t.f1)
如果您只想要其中一个副本,则:
select t.*
from mytable t
where
t.f1 < t.f2
and exists (select 1 from mytable t1 where t1.f1 = t.f2 and t1.f2 = t.f1)
您可以使用EXISTS
和GREATER THAN
运算符,如下所示:
SELECT * FROM YOUR_TABLE T
WHERE EXISTS (
SELECT 1
FROM YOUR_TABLE T1
WHERE T1.F1 = T.F2
AND T1.F2 = T.F1
)
AND T1.F1 > T1.F2;
如果要删除此类重复记录,请在上述查询中使用DELETE
而不是SELECT *
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.