小编ken*_*yuk的帖子

MySQL中的好友关系

我正在 MySQL 中发展友谊关系,其中朋友关系是相互的。如果 A 是 B 的朋友,则 B 是 A 的朋友。如果其中一个用户结束友谊,则关系下降。我想知道哪种方式更好。

我有一个正在运行的系统;

user
-----------
userid p.k
name 

friends
-------
userid
friendid
primary key (`userid`,`friendid`),
key `friendid` (`friendid`)

1 2
2 5
1 3


To get all of my friends;
SELECT u.name, f.friendid , IF(f.userid = $userid, f.friendid, f.userid) friendid 
FROM friends f 
    inner join user u  ON ( u.userid = IF(f.userid = $userid, f.friendid, f.userid)) 
WHERE ( f.userid = '$userid' or f.friendid = '$userid' ) 
Run Code Online (Sandbox Code Playgroud)

此查询运行良好。也许我可以添加一个UNION. 查询比下面的更复杂,并且该表包含的记录数是下面的一半。

另一种方法是将关系保持在不同的行中; …

mysql relational-theory

8
推荐指数
1
解决办法
4570
查看次数

标签 统计

mysql ×1

relational-theory ×1