これでうまくいくはずです:
SELECT COUNT(me.A) FROM social AS me
INNER JOIN social AS you ON me.B = you.A
WHERE me.A = you.B AND me.A = 1
COUNT
を削除します 友達のリストが必要な場合。
編集
要求に応じて、説明。
あなたはJOIN
行間の関係に関心があるため、テーブルをそれ自体に結合します。
テーブルのエイリアスをme
にすることにしました およびyou
関係を明確にするために。つまり、その列はA
私をフォロワーと呼ぶことができます またはフォロワーとしてのあなた。列B
フォロワーを指します
列の名前を変更すると、クエリはより明確に読み取られます
A
の場合 ->follower
およびB
->followee
、次のようになります:
SELECT COUNT(me.follower) FROM social AS me
INNER JOIN social AS you ON me.followee = you.follower
WHERE me.follower = you.followee AND me.follower = 1
つまり、このテーブルのコピーを2つ取り、JOIN
me
のフォロワーがいる行 you
のフォロワーです 。次に、me
のフォロワーがいる行のみをフィルタリングして表示します you
のフォロワーです ... (A == B) && (B == A)
が欲しいというあなたの願望を捉えることで
おそらくテーブルエイリアスはそれほど素晴らしいものではありませんが、少し明確になることを願っています。
2回目の編集 以下のコメントによると、より明確なフォームは次のようになります。
SELECT COUNT(me.A) FROM social AS me
INNER JOIN social AS you ON me.A = you.B AND me.B = you.A
WHERE me.A = 1