我有一张这样的表
UserFriends
Id UserId RequestId Status
1 1 2 1
2 1 3 1
3 1 4 0
4 3 2 1
5 3 4 1
基本上结构是如果状态为0请求不被接受,否则1接受并且他们是朋友
我正在尝试让用户2的朋友,我该怎么办?
重要编辑: 我想要获得用户3的朋友。你知道如果用户1添加了用户3他们是朋友而用户3也添加了2和4他们的朋友(用户3朋友必须返回1,2和4这是基本的解释)
答案 0 :(得分:3)
如果我读得正确,友谊的特征是用户邀请其他用户或该用户被其他用户邀请,并且在这两种情况下都接受了请求。如果是这样,那么以下UNION
查询应该给出预期结果:
SELECT RequestId
FROM UserFriends
WHERE UserId = 3 AND Status = 1
UNION
SELECT UserId
FROM UserFriends
WHERE RequestId = 3 AND Status = 1
我在这里使用UNION
,因为如果一对用户互相邀请,或者邀请被多次发送,则给定用户可以多次出现为朋友。我假设你不想多次向朋友报告同一个用户。
<强>输出:强>
在这里演示: