2012-04-06 44 views
1

獲取好友列表我有以下結構的表名爲朋友:MySQL查詢到從朋友表

id, from_id, to_id, confirmed, .... 

此表包含所有用戶的所有好友列表。 from_id和to_id包含用戶的id,其中from_id是實際發送好友請求的用戶。

現在,我需要選擇一個特定用戶的所有朋友列表。

是爲更好地使用下面的查詢或與工會查詢做到這一點:

"select (from_id + to_id)- $user_id as friend_id, ... from friends where from_id=$user_id or to_id=$user_id" 

回答

1

雖然我愛你的數學風扇解決方案,我認爲它不考慮溢出問題。例如:如果添加兩個非常大的數字會發生什麼?

除此之外,您的解決方案依賴於數字user_id。使用聯合可能需要多一點(您應該測試以確保),但可以處理任何數據類型。

1

我會用一個union(請確保您有from_idto_id索引):

select from_id from friends where to_id = $user_id 
union 
select to_id from friends where from_id = $user_id 

這在我看來更清楚。

+0

我應該如何確保我在from_id和to_id上有索引? – 2012-04-06 19:00:32

+0

爲每個人創建一個索引。看一下MySQL中的'create index'語句。 – 2012-04-06 19:04:09

1

假設你在ID上有鍵,聯合肯定會更好,然後執行算術運算。