gpt4 book ai didi

php - 社会-双向友谊关系

转载 作者:行者123 更新时间:2023-11-29 13:25:30 25 4
gpt4 key购买 nike

我有两个简单的 MySQL 表:用户和关系。

关系表:

user_id int(10) unsigned    NO  PRI     
friend_id int(10) unsigned NO PRI

(部分)用户表:

id  int(10) unsigned    NO  PRI     
username varchar(128) NO

我使用此查询选择 friend 的 friend :

SELECT f2.friend_id, u.username
FROM relations f1
JOIN relations f2 ON f1.friend_id=f2.user_id
LEFT JOIN user u ON u.id = f2.friend_id
WHERE f2.friend_id NOT IN (select friend_id from relations where user_id=@user_id) AND f1.user_id= 2 AND f2.friend_id!= 2

以上查询对于单向关系来说是可以的(我认为),我的“ friend ”不必接受友谊。我知道它在某些情况下可行,但我认为对我来说它应该是双向的。我知道,“IN”语句的效率不是很高。获得 friend 的最好(最快?对mysql服务器最友好?)的方法是什么,但仅限于那些已接受友谊的人(关系表中的两条记录:

user_id:1 + friend_id:2 and user_id:2 + friend_id:1)?

最佳答案

您确定需要 LEFT JOIN 到用户表吗?这不是需要记录存在的外键吗?对于双向关系,您不只是在关系表中查找用户和 friend 字段“交换​​”的记录吗?

SELECT f2.friend_id, u.username
FROM relations f1
JOIN relations f2
ON f1.friend_id = f2.user_id
AND f1.user = f2.friend_id
LEFT JOIN user u
ON u.id = f1.friend_id
WHERE f1.user_id @user_id;

关于php - 社会-双向友谊关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20192697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com