我试图让两个人之间有共同的朋友。我将这些人的朋友保存在一个名为“朋友”的表中,其中包含以下字段:
编号 | facebook_id | 姓名 | uid | 时间戳
- id = 记录的唯一 ID
- facebook_id = 朋友的 facebook id
- name = 朋友的名字
- uid = 我网站上的用户 uid,它是保存在表格中的人的朋友
- 时间戳=不需要解释:-)
希望有意义,尝试了各种方法来获得朋友,但没有运气
我不知道使用子查询是否会更快或 mySQL 已经对其进行了优化。带有子查询的解决方案:
SELECT f1.id, f1.name
FROM (SELECT id, name FROM friends WHERE uid=1) f1
JOIN (SELECT id, name FROM friends WHERE uid=2) f2
ON f1.id=f2.id;
如果 MySQL 有一个运算符,那就太好了INTERSECT
,但是......
您可以抓住一个人的所有朋友:
SELECT id, name
FROM friends
WHERE uid = 1
然后,您可以将此列表加入到朋友表中,为其他用户寻找相同的朋友:
SELECT f1.id, f1.name
FROM friends f1
JOIN friends f2 on f1.id = f2.id
WHERE f1.uid = 1
and f2.uid = 2
这是伪代码,但应该很接近。