2

我有一个朋友列表表,我在其中保持两个用户之间的友谊关系,然后加入他们的帖子等:

(user_a, user_b, relation type) 

以下是一些示例数据:

u_f_id | user_a | user_b | relation_type 
----------------------------------------
  12   | 20     |  23    |    1           //friend
  13   | 30     |  20    |    2           //family

我还有一个用户表,我在其中保存用户的姓名和详细信息。

我正在寻找一个返回用户他们的朋友的查询。例如,如果它出现在user_aor中,我需要用户 20 的朋友user_b

我尝试了以下方法:

SELECT CASE
         WHEN user_friends.user_a = 20 THEN user_friends.user_b
         ELSE user_friends.user_a
       END AS friend,
       user_friends.*
FROM   user_friends
WHERE  user_friends.user_a = 20
        OR user_friends.user_b = 20
4

1 回答 1

0

这是您的用户。

select 
    case user_a when 20 then user_b else user_a end as user_id
from user_friends
where 20 in (user_a, user_b)
and relation_type=1
union 
select 20   
于 2012-08-30T13:09:39.950 回答