SQL选择Where

时间:2017-05-04 01:26:19

标签: sql database

我有一张这样的表

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这是基本的解释)

1 个答案:

答案 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,因为如果一对用户互相邀请,或者邀请被多次发送,则给定用户可以多次出现为朋友。我假设你不想多次向朋友报告同一个用户。

<强>输出:

enter image description here

在这里演示:

Rextester