我有一个朋友列表,我保持两个用户之间的友谊关系,然后加入他们的帖子等:
(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
我还有一个用户表,其中我保留了用户的姓名和详细信息。
我正在构建一个返回用户和他们的朋友的查询。例如,我需要用户20的朋友,如果它出现在user_a
或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
答案 0 :(得分: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