Ini harus melakukannya:
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
Hapus COUNT
jika Anda ingin daftar teman.
EDIT
Seperti yang diminta, penjelasan.
Anda JOIN
memasukkan tabel ke dirinya sendiri karena Anda tertarik dengan hubungan antar baris.
Saya memutuskan untuk memberi nama tabel sebagai me
dan you
untuk memperjelas hubungan. Yang dimaksud adalah kolom A
dapat merujuk saya sebagai pengikut atau Anda sebagai pengikut. Kolom B
mengacu pada pengikut
Jika Anda mengganti nama kolom, kueri akan terbaca lebih jelas
jika A
-> follower
dan B
-> follower
, kita akan memiliki:
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
Jadi dikatakan, ambil dua salinan tabel ini dan JOIN
baris di mana pengikut di me
adalah pengikut di you
. Kemudian, filter dan tampilkan hanya baris tempat pengikut di me
adalah pengikut di you
... di sana dengan menangkap keinginan Anda untuk memiliki (A == B) && (B == A)
Mungkin alias tabelnya tidak terlalu bagus, tapi saya harap itu bisa menjelaskan sedikit.
EDIT KEDUA Per komentar di bawah, formulir yang lebih jelas mungkin:
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