我有一个表(field1、field 2、field3、field4),我怎样才能筛选出那些在两个相邻列中包含重复组合的行 - field3 和 field4?即->
问问题
1535 次
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 回答