Das sollte es tun:
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
Entfernen Sie den COUNT wenn du eine Freundesliste haben möchtest.
BEARBEITEN
Wie gewünscht, eine Erklärung.
Sie sind JOIN eine Tabelle an sich selbst zu übertragen, weil Sie an den Beziehungen zwischen Zeilen interessiert sind.
Ich habe mich entschieden, die Tabellen als me zu aliasieren und you um den Zusammenhang deutlich zu machen. Was das sagt, ist diese Spalte A kann mich als den Follower bezeichnen oder Sie als Follower. Spalte B bezieht sich auf den followee
Wenn Sie die Spalten umbenennen würden, würde die Abfrage klarer lesen
wenn A -> follower und B -> followee , hätten wir:
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
Es heißt also, nimm zwei Kopien dieser Tabelle und JOIN die Zeilen, in denen der Follower in me steht ist der Follower in you . Filtern Sie dann und zeigen Sie nur die Zeilen an, in denen sich der Follower in me befindet ist der Follower in you ... indem Sie Ihren Wunsch nach (A == B) && (B == A) festhalten
Vielleicht sind die Tabellenaliase nicht so toll, aber ich hoffe, das klärt ein wenig auf.
ZWEITE BEARBEITUNG Gemäß den Kommentaren unten könnte eine klarere Form sein:
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