-1

テーブル mysql テーブル 'friends' で一方向の関係を見つけようとしています

Name    Friend
John    Mary
Krish   Paula
Debbie  John
Paula   Krish
Mary    John

ペア (B - A) が見つからないすべてのペア (A - B) をリストしたい。
例: (John - Debbie) が存在しないため、クエリは行 4 (Debbie - John) を選択する必要があります。

4

4 に答える 4

4
Select f1.* from Friends as f1
left join Friends as f2 on f1.Name = f2.Friend and f1.Friend = f2.Name
where f2.Name is null

SQLフィドル

于 2013-07-04T07:57:15.517 に答える
4

maximum() と least()も使用できます

Select 
greatest(Name,Friend),least(Name,Friend)
from Friends
group by greatest(Name,Friend),least(Name,Friend)
having count(1)=1

SQL フィドル

于 2013-07-04T08:05:24.457 に答える
1

あなたの問題を解決するのはクエリです。

select * from friends where name not in (select a.name from friends a, friends b where a.friend=b.name and a.name=b.friend);
于 2013-07-04T08:13:26.133 に答える
-1
Select Name, Friend from Friends as f1
left join Friends as f2 on f1.Name = f2.Friend AND f1.Friend = f2.Name
于 2013-07-04T08:02:57.863 に答える