Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

thu hút người theo dõi trên twitter như sử dụng MySQL

Điều này nên làm điều đó:

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

Xóa COUNT nếu bạn muốn có một danh sách bạn bè.

CHỈNH SỬA

Theo yêu cầu, một lời giải thích.

Bạn đang JOIN nhập một bảng vào chính nó vì bạn quan tâm đến mối quan hệ giữa các hàng.

Tôi quyết định đặt bí danh cho các bảng là meyou để làm cho mối quan hệ rõ ràng. Điều đang nói là cột đó A có thể gọi tôi là người theo dõi hoặc bạn là người theo dõi. Cột B đề cập đến người theo dõi

Nếu bạn đổi tên các cột, truy vấn sẽ đọc rõ ràng hơn

if A -> followerB -> follower , chúng tôi sẽ có:

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

Vì vậy, nó nói rằng, hãy lấy hai bản sao của bảng này và JOIN các hàng mà người theo dõi trong me là người theo dõi trong you . Sau đó, lọc và chỉ hiển thị các hàng có người theo dõi trong me là người theo dõi trong you ... ở đó bằng cách nắm bắt mong muốn của bạn là có (A == B) && (B == A)

Có lẽ bí danh của bảng không tuyệt vời như vậy, nhưng tôi hy vọng điều đó sẽ làm sáng tỏ một chút.

CHỈNH SỬA THỨ HAI Theo nhận xét bên dưới, một biểu mẫu rõ ràng hơn có thể là:

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. MySQL - Truy vấn đặt hàng và hiển thị một hàng ngẫu nhiên ở trên cùng

  2. Làm cách nào để lưu kết quả truy vấn MySQL vào tệp excel hoặc .txt?

  3. Lệnh gọi Ajax trả về toàn bộ trang thay vì chỉ giá trị echo

  4. Tạo cơ sở dữ liệu MySQL với tệp .SQL

  5. Truy vấn cơ sở dữ liệu PHP / SQL thực hành tốt và bảo mật