mySQL查询 - 抓取用户x的朋友

时间:2012-06-12 19:38:28

标签: mysql

说我有用户,用户可以成为朋友。我有一个用户和用户数据表,以及一个友情表(连接ID,用户id,用户b id)。

我在mySQL中可以做一个单一的查询,它可以从用户表中获取所有用户x的朋友吗?用户x的id可能位于友谊表中的插槽或b插槽中,这使得这比我想象的更复杂。

编辑清晰度:

我需要users表中的所有数据,供当前用户的朋友使用。因此,如果当前用户是友谊表中的用户a,则我需要用户b的用户数据,反之亦然。我希望根据友谊表中的关系,为所有当前用户的朋友(来自users表)提供所有数据。

2 个答案:

答案 0 :(得分:4)

使用SQL Fiddle即可:

SELECT u.name as friends
FROM friendship AS f
JOIN users AS u ON 
  ((u.user_id = f.user_a_id AND f.user_b_id = @user_id)
  or (u.user_id = f.user_b_id AND f.user_a_id = @user_id))
where u.user_id is not null;

在此@user_id中是您要查找朋友的用户的ID号,输出是朋友的姓名。

答案 1 :(得分:0)

SELECT users.user_id FROM users, friends WHERE (users.user_id=friends.user_a_id AND friends.user_b_id=x) OR (users.user_id=friends.user_b_id AND friends.user_a_id=x);