沒有行可以有rel
一次以c
和f
開頭。
一種方法是創建一個子查詢來分類關係。在此,它將同事分類爲1和朋友爲2.要檢測交換名稱的關係行,查詢會按照字母順序挑選第一個名稱,如name_1
。 having
條款要求存在這兩種類型的關係。
select name_1
, name_2
from (
select case when name_1 > name_2 then name_1 else name_2 end as name_1
, case when name_1 > name_2 then name_2 else name_1 end as name_2
, case when rel like 'c%' then 1
when rel like 'f%' then 2
end as Type
from YourTable
) as SubQueryAlias
group by
name_1
, name_2
having count(distinct Type) = 2
另一種方法是選擇所有的同事,並用exists
,要求他們的朋友:
select distinct
case when name_1 > name_2 then name_1 else name_2 end as name_1
, case when name_1 > name_2 then name_2 else name_1 end as name_2
from YourTable c
where c.rel like 'c%'
and exists
(
select *
from YourTable f
where f.rel like 'f%'
and
(
(c.name_1 = f.name_1 and c.name_2 = f.name_2)
or (c.name_1 = f.name_2 and c.name_2 = f.name_1)
)
)
它會更好,如果你發佈你的表的數據。我認爲你的桌子沒有完成。 – stinepike 2011-03-06 10:20:58