2

我有一个表(field1、field 2、field3、field4),我怎样才能筛选出那些在两个相邻列中包含重复组合的行 - field3 和 field4?即-> 在此处输入图像描述

4

1 回答 1

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子句分组以选择重复项。

外部查询连接到这两种方式以获取所有行。

于 2013-05-22T09:15:14.297 回答