Mysql
 sql >> Baza danych >  >> RDS >> Mysql

zdobądź obserwujących na Twitterze jak przy użyciu MySQL

To powinno wystarczyć:

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

Usuń COUNT jeśli chcesz listę znajomych.

EDYTUJ

Zgodnie z żądaniem wyjaśnienie.

Jesteś JOIN tabelę do siebie, ponieważ interesują Cię relacje między wierszami.

Zdecydowałem się aliasować tabele jako me i you aby związek był jasny. Oznacza to, że kolumna A może nazywać mnie obserwatorem lub ty jako obserwujący. Kolumna B odnosi się do obserwatora

Jeśli zmienisz nazwy kolumn, zapytanie będzie bardziej czytelne

jeśli A -> follower i B -> followee , mielibyśmy:

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

To znaczy, weź dwie kopie tej tabeli i JOIN wiersze, w których obserwujący w me jest obserwatorem w you . Następnie przefiltruj i pokaż tylko te wiersze, w których obserwujący w me jest obserwowanym w you ... tam poprzez uchwycenie pragnienia posiadania (A == B) && (B == A)

Być może aliasy tabel nie są tak wspaniałe, ale mam nadzieję, że to trochę wyjaśnia.

DRUGA EDYCJA Zgodnie z poniższymi komentarzami jaśniejszą formą może być:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można zatrzymać procesu mysql

  2. połączyć AngularJS z mysql za pomocą mojej usługi PHP?

  3. LOAD DATA INFILE:Nieprawidłowy ciąg znaków ut8mb4

  4. Jak sprawdzić, czy użytkownik już istnieje w MySQL z PHP?

  5. MYSQL Zrzuć tylko niektóre wiersze