输出所有重复的行(SQL Server)

时间:2018-11-26 20:30:15

标签: sql sql-server tsql

我有一张桌子,上面放着我认为重复的行。这些记录中的值可能并不完全相同,但是通过模糊逻辑计算得出它们可能是重复的。例如:

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  

但是我正在努力构建一个可以做到这一点的查询。

谢谢。

2 个答案:

答案 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_inkey_out之间存在不匹配,您希望提取key_in具有任一值的所有行。

我将创建一个临时表,其中所有值都与key_inkey_out不匹配的行中的所有值匹配,将其称为bad_match

如果您的key_inkey_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构建您的架构并返回所需的输出