我有一个表(field1,field 2,field3,field4), 如何只筛选出两个相邻列中包含重复组合的行 - field3和field4?即 - >
答案 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
子句分组以选择重复项。
外部查询加入这两种方式来获取所有行。