我正在尝试制作新闻Feed而且我被困住了。
假设我有一个MySQL表,其中包含一些名为table friends
的数据:
让我说我有这个名为table status
例如,我的用户ID与friend_1
上的friend_2
或friends
以及uid
的{{1}}相关。我需要使用哪些MySQL查询才能看到status
中哪些朋友拥有friends
中的数据行?
答案 0 :(得分:2)
SELECT status.*
FROM status, friends
WHERE (friend_2 = uid AND friend_1 = <your_id>)
OR (friend_1 = uid AND friend_2 = <your_id>);
如果每个友谊插入2行(和) - 您不需要OR (...)
答案 1 :(得分:1)
这将为当前用户的朋友选择所有状态。
SELECT s.*
FROM status s
INNER JOIN friends f ON f.friend_2 = s.uid
WHERE f.friend_1 = your_current_user;
另外我建议不要双向处理友情链接。制作单独的链接。例如,如果用户1和5是朋友,则您将拥有两条记录。
| friend_1 | friend_2 |
| 1 | 5 |
| 5 | 1 |
这增加了存储空间,但简化了查询。如果需要,它还可以实现单方面的友谊。 : - )