Mysql
 sql >> база данни >  >> RDS >> Mysql

получавайте последователи в Twitter, като използвате MySQL

Това трябва да стане:

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

Премахнете COUNT ако искате списък с приятели.

РЕДАКТИРАНЕ

Както е поискано, обяснение.

Вие сте JOIN преобразуване на таблица за себе си, защото се интересувате от връзките между редовете.

Реших да направя псевдоним на таблиците като me и you за да стане ясно връзката. Това, което казва, е тази колона A може да се отнася към мен като последовател или вие като последовател. Колона B се отнася до последователя

Ако трябваше да преименувате колоните, заявката ще се чете по-ясно

ако A -> follower и B -> followee , ще имаме:

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

Така се казва, вземете две копия на тази таблица и JOIN редовете, където следват в me е последователят в you . След това филтрирайте и покажете само редовете, където е последователят в me е последователят в you ... там, като улови желанието ви да имате (A == B) && (B == A)

Може би псевдонимите на таблицата не са толкова добри, но се надявам, че това малко изяснява.

ВТОРА РЕДАКТИРАНЕ Според коментарите по-долу, по-ясен формуляр може да бъде:

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. Преобразуване на Json в SQL таблица

  2. Как да направя връзката си с базата данни сигурна?

  3. Създаване на таблици и проблеми с първичен ключ в Rails

  4. Получаване на необработен низ за SQL заявка от подготвени оператори на PDO

  5. Как да управлявате Rails database.yml