Detta borde göra det:
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
Ta bort COUNT
om du vill ha en lista med vänner.
REDIGERA
Som begärt, en förklaring.
Du är JOIN
skapa en tabell för sig själv eftersom du är intresserad av relationerna mellan rader.
Jag bestämde mig för att kalla tabellerna me
och you
för att göra relationen tydlig. Vad det säger är den där kolumnen A
kan referera till mig som följaren eller du som följare. Kolumn B
hänvisar till följaren
Om du skulle byta namn på kolumnerna skulle frågan läsas tydligare
om A
-> follower
och B
-> follower
, vi skulle ha:
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
Så man säger, ta två kopior av den här tabellen och JOIN
raderna där följaren i me
är följare i you
. Filtrera sedan och visa bara raderna där följaren i me
är efterföljaren i you
... där genom att fånga din önskan att ha (A == B) && (B == A)
Tabellaliasen kanske inte är så bra, men jag hoppas att det förtydligar lite.
ANDRA REDIGERING Enligt kommentarerna nedan kan en tydligare form vara:
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