Mělo by to stačit:
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
Odeberte COUNT pokud chcete seznam přátel.
UPRAVIT
Jak bylo požadováno, vysvětlení.
Jste JOIN tabulku pro sebe, protože vás zajímají vztahy mezi řádky.
Rozhodl jsem se pojmenovat tabulky jako me a you aby byl vztah jasný. Říká se tím sloupec A může mě označovat jako sledovníka nebo vy jako sledující. Sloupec B odkazuje na následujícího
Pokud byste přejmenovali sloupce, dotaz by se četl jasněji
pokud A -> follower a B -> followee , měli bychom:
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
Takže to říká, vezměte si dvě kopie této tabulky a JOIN řádky, kde je následovník v me je následovník v you . Poté filtrujte a zobrazte pouze řádky, kde je následovník v me je sledující ve you ... tam zachycením vaší touhy mít (A == B) && (B == A)
Možná nejsou aliasy tabulek tak skvělé, ale doufám, že to trochu objasní.
DRUHÁ ÚPRAVA Podle níže uvedených komentářů může být jasnější forma:
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