2013-04-24 137 views
0

所以,我有一個朋友表中設置了列如下:MySQL的朋友表查詢

requester_user_id //the user initiating the request 
requested_user_id //the user responding to the request 
established //bool, true is 'these two are friends' 

我有一些列,但他們不是這個問題很重要。

我需要的是一個查詢,它將獲得您所有朋友ID的列表。問題是,您的ID可能在請求者或請求中,具體取決於誰發起了請求。

我覺得必須有一個簡單的方法,但我不知道沒有做多個if s。

感謝您解決此問題的任何幫助!

+0

'選擇yourTable requester_user_id那裏建立= TRUE;是不是這方面的工作? – 2013-04-24 18:32:32

+0

事情是我需要請求者或要求,無論哪個不是我:)我知道我的身份證。我需要其他ID。 – 2013-04-24 21:23:34

回答

1
SELECT distinct id from (
SELECT requested_user_id as id FROM friends where requester_user_id = @myid 
UNION 
SELECT requester_user_id as id FROM friends where requested_user_id = @myid 
) 
+0

事情是我只想要一個其他人的ID列表,而不是我的。 – 2013-04-24 21:24:00

+1

@ J.P .:這將返回*其他*人的ID - 當請求** ed **匹配\ @myid時,它是請求** er **的聯合,反之亦然。 – 2013-04-25 06:47:41

2

方式一:

select distinct 
     case requester_user_id 
      when @myid then requested_user_id 
      else requester_user_id 
     end id 
from friends 
where @myid in (requester_user_id, requested_user_id) 
+0

使用案例陳述+1好答案! – 2013-04-24 19:37:40

+0

這看起來像它會工作!我不知道MySQL中的病例陳述:D我會盡快嘗試。謝謝,我會讓你知道如何解決。 – 2013-04-24 21:25:03