Mysql查询找“不是朋友”

时间:2014-11-18 05:04:07

标签: mysql

我想要一个mysql查询,它检索不是当前用户和其他用户发送的当前用户和好友请求的朋友的用户的记录列表。

以下是我的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)。

  
    

用户(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)

  
     朋友(4,3,1,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)

1 个答案:

答案 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)