Mysql
 sql >> Base de données >  >> RDS >> Mysql

obtenir des abonnés Twitter comme utiliser MySQL

Cela devrait le faire :

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

Supprimez le COUNT si vous voulez une liste d'amis.

MODIFIER

Comme demandé, une explication.

Vous êtes JOIN un tableau à lui-même parce que vous vous intéressez aux relations entre les lignes.

J'ai décidé d'aliaser les tables en tant que me et you pour clarifier la relation. Ce que cela dit, c'est que la colonne A peut me désigner comme le suiveur ou vous en tant que suiveur. Colonne B fait référence au suivi

Si vous deviez renommer les colonnes, la requête se lirait plus clairement

si A -> follower et B -> followee , nous aurions :

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

Donc, il dit, prenez deux copies de cette table et JOIN les lignes où le followee dans me est le suiveur en you . Ensuite, filtrez et affichez uniquement les lignes où le suiveur dans me est le suiveur en you ... là en capturant votre désir d'avoir (A == B) && (B == A)

Peut-être que les alias de table ne sont pas si géniaux, mais j'espère que cela clarifie un peu.

DEUXIÈME MODIFICATION Selon les commentaires ci-dessous, une forme plus claire peut être :

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