sql >> Database teknologi >  >> RDS >> Mysql

få følgere på Twitter som at bruge MySQL

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



  1. Gør databaseresultatet til array

  2. Lagring og visning af unicode-streng (हिन्दी) ved hjælp af PHP og MySQL

  3. Sådan analyseres tid fra databasen

  4. Hvordan NOT LIKE virker i MariaDB