以下是我的users
表格(id,用户名)
这是我的friends
表(id,friend_one,friend_two,status)
状态0表示待处理请求,1表示接受请求。当接受请求时,将触发1更新和插入查询。例如(1,4,1,0)4向1发送请求,用户1接受请求,现在在friends表中的条目看起来像(1,4,1,1)(2,1,4,1)。
朋友(4,3,1,0)用户(1' A&#39)
用户(2,' B&#39)
用户(3' C&#39)
用户(4' d&#39)
用户(5' E&#39)
好友表条目
朋友(1,4,1,1) 朋友(2,1,4,1) 朋友(3,1,2,0)
预期结果
用户名ID状态
B 2 0
E 5 NULL
修改
这就是我正在尝试但我也得到了一条记录,他向我发送了一个我不想要的朋友请求
SELECT u2.username, u2.id, f.status
FROM users u1
INNER JOIN users u2
ON u1.id != u2.id
LEFT OUTER JOIN friends f
ON u1.id = f.friend_one
AND u2.id = f.friend_two
WHERE u1.id = 1
AND (f.status IS NULL
OR f.status = 0)
答案 0 :(得分:1)
我想我明白你要去哪里......这个答案应该让你接近。
select users.name, users.id, coalesce(friends.status, friends2.status) as status
from users
left join friends on friends.friend_two = 1 and friends.friend_one = users.id
left join friends friends2 on friends2.friend_two = users.id and friends2.friend_one = 1
where users.id != 1
and (friends.status is null or friends.status != 1)
and (friends2.status is null or friends2.status != 1)