Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

obter seguidores no twitter como usar o MySQL


Isso deve servir:
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

Remova o COUNT se você quiser uma lista de amigos.

EDITAR

Conforme solicitado, uma explicação.

Você está JOIN ing uma tabela para si mesmo porque você está interessado nas relações entre as linhas.

Eu decidi apelidar as tabelas como me e you para deixar a relação clara. O que isso está dizendo é que a coluna A pode se referir a mim como o seguidor ou você como seguidor. Coluna B refere-se ao seguidor

Se você renomeasse as colunas, a consulta ficaria mais clara

se A -> follower e B -> follower , teríamos:
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

Então está dizendo, pegue duas cópias desta tabela e JOIN as linhas onde o seguidor em me é o seguidor em you . Em seguida, filtre e mostre apenas as linhas onde o seguidor em me é o seguidor em you ... lá capturando seu desejo de ter (A == B) && (B == A)

Talvez os aliases de tabela não sejam tão bons, mas espero que isso esclareça um pouco.

SEGUNDA EDIÇÃO De acordo com os comentários abaixo, uma forma mais clara pode ser:
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