sql >> Database >  >> RDS >> Mysql

krijg volgers twitter zoals het gebruik van MySQL

Dit zou het moeten doen:

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

Verwijder de COUNT als je een lijst met vrienden wilt.

BEWERKEN

Zoals gevraagd, een uitleg.

Je bent JOIN een tabel naar zichzelf toe omdat je geïnteresseerd bent in de relaties tussen rijen.

Ik besloot de tabellen een alias te geven als me en you om de relatie duidelijk te maken. Wat dat zegt is die kolom A kan naar mij verwijzen als de volger of jij als volger. Kolom B verwijst naar de volgeling

Als u de kolommen zou hernoemen, zou de zoekopdracht duidelijker zijn

als A -> follower en B -> followee , zouden we hebben:

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

Dus het zegt:neem twee exemplaren van deze tabel en JOIN de rijen waar de volgeling in me is de volger in you . Filter vervolgens en toon alleen de rijen waar de volger in me is de volgeling in you ... daar door uw wens vast te leggen om (A == B) && (B == A) te hebben

Misschien zijn de tabelaliassen niet zo geweldig, maar ik hoop dat dat een beetje verduidelijkt.

TWEEDE BEWERKING Per opmerkingen hieronder kan een duidelijker formulier zijn:

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. Initialiseer MariaDB 10.4.12 op CentOS 7.7

  2. Efficiënt gegevensmodel voor bereikquery's

  3. Upgraden naar de nieuwste Jira met de nieuwste versie van MariaDB Server

  4. Hoe krijg je de UTC van een datetime-veld?