MySQL获取尚未成为朋友的用户

时间:2015-02-03 05:46:10

标签: mysql sql

大家好,我是新手,我需要你的帮助才能获取尚未成为朋友的用户。

这是我的表格:

  Users 
  id    username   
  1     kyle
  2     jane
  3     jim
  4     carla

  Friends
  id    username  friend
  1     kyle      jane
  2     jane      kyle
  3     kyle      jim
  4     jim       kyle

这是我迄今为止所尝试过的:

  SELECT username
  FROM users AS u
  WHERE NOT EXISTS (SELECT * FROM friends AS f
              WHERE (f.username = 'kyle')
             )

但我没有检索到任何结果。它应该显示1条记录,那就是carla。有任何想法吗?我很乐意感谢你的帮助。谢谢。另外,你能否提出更加强有力的方法呢?

2 个答案:

答案 0 :(得分:2)

select a.username 
  from users a 
   left join friends b 
      on a.username= b.username 
        where b.username is null;

另外,一个更简单的方法是:

user table

userid  username
1       kyle
2       jane
3       jim
4       carla

friends table

friendid  userid  friend
1          1       jane
2          2       kyle
3          1       jim
4          3       kyle

答案 1 :(得分:1)

经过长时间寻找解决方案后,这就是我所拥有的:

 SELECT * FROM users AS u 
 WHERE u.username NOT IN 
 (
     SELECT f.username FROM friends as f
     WHERE f.username = 'kyle'
     OR f.friend = 'kyle'
 )

我希望这也有助于其他人。