SQL:如何在两个相邻列中查找重复的组合

时间:2013-05-22 09:08:56

标签: sql

我有一个表(field1,field 2,field3,field4),  如何只筛选出两个相邻列中包含重复组合的行 - field3和field4?即 - > enter image description here

1 个答案:

答案 0 :(得分:1)

试试这个:

select *
from mytable t
join (
    select field3, field4, count(*) from (
      select field3, field4 from mytable where field3 <= field4
      union all
      select field4, field3 from mytable where field3 > field4) x
    group by field3, field4
    having count(*) > 1) y
  on (t.field3 = y.field3 and t.field4 = y.field4)
    or (t.field3 = y.field4 and t.field4 = y.field3)

union all内部查询将所有值排成一行,而不会将重复项(如union所示)删除到一致的列中 - where子句确保不会选择两次行。

然后将内部查询与having子句分组以选择重复项。

外部查询加入这两种方式来获取所有行。