我正在做一個學校內部交流系統,現在遇到一個問題
比如:使用者A的ID是5,使用者B的ID是6,如何?使用者A關注的人同樣也關注B,怎麼統計出來人數呢?
已知的表:Follow_table(關注表)
follow_id(自增ID) | user_id(粉絲ID) | follow_user_id(被粉絲ID) | follow_time(關注時間) |-------------------------------------------------------------------------------------------------- 1 | 5 | 1 | 2015-08-22 10:29:11 |
以上是表的結構。
請問mysql查詢語句怎麼寫呢?感謝大家!!
回複內容:
我正在做一個學校內部交流系統,現在遇到一個問題
比如:使用者A的ID是5,使用者B的ID是6,如何?使用者A關注的人同樣也關注B,怎麼統計出來人數呢?
已知的表:Follow_table(關注表)
follow_id(自增ID) | user_id(粉絲ID) | follow_user_id(被粉絲ID) | follow_time(關注時間) |-------------------------------------------------------------------------------------------------- 1 | 5 | 1 | 2015-08-22 10:29:11 |
以上是表的結構。
請問mysql查詢語句怎麼寫呢?感謝大家!!
查A關注的人裡有多少關注B的,是這意思吧
select count (1) from Follow_table where follow_user_id=6 and user_id in (select follow_user_id from Follow_table where user_id=5)
是說A、B同時關注的人,建議分別取A關注的人和B關注的人然後取數組交集這樣會降低資料庫負載,因為資料庫CPU資源更寶貴。
一條sql的話試試這樣:
select a.follow_user_id from Follow_table a, Follow_table b where a.user_id=5 and b.user_id=6 and a.follow_user_id=b.follow_user_id;
先查詢到使用者a關注的人,然後再判斷這些人有沒有關注b
確定不用redis???
假設a->b,a->[b,c,d,e],會不會有c->b或d->b呢,設定->左側為left(關注人),右側為right(被關注人),先找到a所關注的對象[right],再以右側b找到所有左側關注人[left],在從[left]中找[right],SQL語句就不寫了。。。