sql >> Databáze >  >> RDS >> Mysql

získat sledující twitter jako pomocí MySQL

Mělo by to stačit:

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

Odeberte COUNT pokud chcete seznam přátel.

UPRAVIT

Jak bylo požadováno, vysvětlení.

Jste JOIN tabulku pro sebe, protože vás zajímají vztahy mezi řádky.

Rozhodl jsem se pojmenovat tabulky jako me a you aby byl vztah jasný. Říká se tím sloupec A může mě označovat jako sledovníka nebo vy jako sledující. Sloupec B odkazuje na následujícího

Pokud byste přejmenovali sloupce, dotaz by se četl jasněji

pokud A -> follower a B -> followee , měli bychom:

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

Takže to říká, vezměte si dvě kopie této tabulky a JOIN řádky, kde je následovník v me je následovník v you . Poté filtrujte a zobrazte pouze řádky, kde je následovník v me je sledující ve you ... tam zachycením vaší touhy mít (A == B) && (B == A)

Možná nejsou aliasy tabulek tak skvělé, ale doufám, že to trochu objasní.

DRUHÁ ÚPRAVA Podle níže uvedených komentářů může být jasnější forma:

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. Zdroj dat MySQL se ve Visual Studiu nezobrazuje

  2. Jak indexy ovlivňují výkon databáze?

  3. Automatizované testování desktopové aplikace:přehled účelnosti a rámců

  4. Vypořádání se s pomalými dotazy s PostgreSQL