MySQL查询双向关系

时间:2014-04-06 16:07:54

标签: php mysql sql phpmyadmin

对于社交Web应用程序,我需要以下列方式创建MySQL表,

id | user_id | friend_id
------------------------
 0 |    5    |   6
 1 |    6    |   5

用户5和另一个用户6现在是朋友。如何获取特定用户的朋友列表。有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:1)

如果您为所有用户存储friend_ids,您可以尝试:

SELECT friend_id FROM TableName WHERE user_id=@userID

从程序中传递参数@userID。

示例:

SELECT friend_id FROM TableName WHERE user_id=5

修改

对于这两个领域:

SELECT CASE WHEN friend_id=5 THEN user_id 
            WHEN user_id=5 THEN friend_id 
            END AS Friend
 FROM TableName

答案 1 :(得分:1)

SELECT f1.user_id, f2.user_id as 'Friend'
    FROM friends f1 left join friends f2
   on f1.user_id = f2.friend_id 

有关详细信息,请参阅此帖What's the difference between INNER JOIN, LEFT JOIN, RIGHT JOIN and FULL JOIN?

答案 2 :(得分:0)

@userid应该具有与表中相同的数据类型,或者您需要将其转换为相同的

select friend_id where user_id=@userid