sql >> Databasteknik >  >> RDS >> Mysql

få följare på twitter som att använda MySQL

Detta borde göra 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

Ta bort COUNT om du vill ha en lista med vänner.

REDIGERA

Som begärt, en förklaring.

Du är JOIN skapa en tabell för sig själv eftersom du är intresserad av relationerna mellan rader.

Jag bestämde mig för att kalla tabellerna me och you för att göra relationen tydlig. Vad det säger är den där kolumnen A kan referera till mig som följaren eller du som följare. Kolumn B hänvisar till följaren

Om du skulle byta namn på kolumnerna skulle frågan läsas tydligare

om A -> follower och B -> follower , vi skulle ha:

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 säger, ta två kopior av den här tabellen och JOIN raderna där följaren i me är följare i you . Filtrera sedan och visa bara raderna där följaren i me är efterföljaren i you ... där genom att fånga din önskan att ha (A == B) && (B == A)

Tabellaliasen kanske inte är så bra, men jag hoppas att det förtydligar lite.

ANDRA REDIGERING Enligt kommentarerna nedan kan en tydligare form vara:

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. php mysql fulltextsökning:lucene, sfinx eller?

  2. Vilken ORM ska jag använda för Node.js och MySQL?

  3. Returnerar en blob med json

  4. Psycopg2, Postgresql, Python:Snabbaste sättet att bulkinfoga