Dette burde gøre 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
Fjern COUNT
hvis du vil have en liste over venner.
REDIGER
Som anmodet, en forklaring.
Du er JOIN
ing en tabel for sig selv, fordi du er interesseret i forholdet mellem rækker.
Jeg besluttede at kalde tabellerne som me
og you
at gøre forholdet klart. Det, det siger, er den kolonne A
kan henvise til mig som følgeren eller dig som følger. Kolonne B
henviser til følgeren
Hvis du skulle omdøbe kolonnerne, ville forespørgslen læses mere tydeligt
hvis A
-> follower
og B
-> follower
, ville vi have:
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 siger, tag to kopier af denne tabel og JOIN
rækkerne hvor følgeren i me
er følgeren i you
. Filtrer derefter og vis kun rækkerne, hvor følgeren er i me
er følgeren i you
... der ved at fange dit ønske om at have (A == B) && (B == A)
Måske er tabelaliasserne ikke så gode, men jeg håber, det tydeliggør lidt.
ANDEN REDIGERING Per kommentarer nedenfor kan en klarere formular være:
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