我有一张桌子,上面放着我认为重复的行。这些记录中的值可能并不完全相同,但是通过模糊逻辑计算得出它们可能是重复的。例如:
RecordCD key_in key_out
---------------------------
1 1 2
2 2 2
3 3 3
4 4 6
5 5 5
6 6 6
7 7 7
8 8 11
9 9 9
10 10 10
11 11 11
key_in
列具有记录的唯一ID。
key_out
列不等于key_in
我需要我的输出看起来像这样并列出所有可能的重复项:
RecordCD key_in key_out
---------------------------
1 1 2
2 2 2
4 4 6
6 6 6
8 8 11
11 11 11
但是我正在努力构建一个可以做到这一点的查询。
谢谢。
答案 0 :(得分:2)
我想这就是你想要的:
select t.*
from t
where exists (select 1
from t t2
where t2.key_out = t.key_out and t2.key_in <> t.key_in
)
order by t.key_out;
Here是db <>小提琴。
答案 1 :(得分:1)
似乎key_in
和key_out
之间存在不匹配,您希望提取key_in
具有任一值的所有行。
我将创建一个临时表,其中所有值都与key_in
,key_out
不匹配的行中的所有值匹配,将其称为bad_match
如果您的key_in
,key_out
值之一都与此值匹配,则将其包含在输出中
select mytable.* from mytable
where key_in in
(select key_in bad_match from mytable where key_in <> key_out
union all
select key_out from mytable where key_in <> key_out);
此sample构建您的架构并返回所需的输出