Dit zou het moeten doen:
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
Verwijder de COUNT
als je een lijst met vrienden wilt.
BEWERKEN
Zoals gevraagd, een uitleg.
Je bent JOIN
een tabel naar zichzelf toe omdat je geïnteresseerd bent in de relaties tussen rijen.
Ik besloot de tabellen een alias te geven als me
en you
om de relatie duidelijk te maken. Wat dat zegt is die kolom A
kan naar mij verwijzen als de volger of jij als volger. Kolom B
verwijst naar de volgeling
Als u de kolommen zou hernoemen, zou de zoekopdracht duidelijker zijn
als A
-> follower
en B
-> followee
, zouden we hebben:
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
Dus het zegt:neem twee exemplaren van deze tabel en JOIN
de rijen waar de volgeling in me
is de volger in you
. Filter vervolgens en toon alleen de rijen waar de volger in me
is de volgeling in you
... daar door uw wens vast te leggen om (A == B) && (B == A)
te hebben
Misschien zijn de tabelaliassen niet zo geweldig, maar ik hoop dat dat een beetje verduidelijkt.
TWEEDE BEWERKING Per opmerkingen hieronder kan een duidelijker formulier zijn:
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