大家好,请问我在获取与我的朋友没有关系的用户的结果时遇到了一个严重的问题。我希望返回的用户的隐私权为0。请记住,我是3号ID。
所以我有两个表(用户表和朋友表)。
用户表
id| username| country | privacy
1 | Everest | Austria | 0
2 | Mark | Sweden | 0
3 | Precious| Norway | 1
4 | Daniel | Ghana | 1
5 | Jim | Greece | 1
6 | Ayo | Brazil | 0
朋友表
id| sender_id| receiver_id| accepted
1 | 1 | 3 | 0
2 | 3 | 4 | 0
我希望获得预期的结果 预期结果
id| username| country | privacy
2 | Mark | Sweden | 0
6 | Ayo | Brazil | 0
我不知道该怎么做,因为我还是SQL新手。谢谢
答案 0 :(得分:1)
我认为应该这样做:
SELECT *
FROM users
WHERE privacy = 0
AND id <> 3
AND id NOT IN (
SELECT receiver_id FROM friends WHERE sender_id = 3
UNION ALL
SELECT sender_id FROM friends WHERE receiver_id = 3
)
假定sender_id和receiver_id不能包含NULL。