我正在尝试构建各种各样的“新闻Feed”,但我在撰写查询时遇到了麻烦!
问题简而言之,如果用户A进入他们的主页并跟随用户B,C,D - 我正试图让他们看到来自用户B,C,D的内容。
假设有2个表:posts, connections
表posts
包含许多相关列,而表connections
包含列id,user,followed
在(可怕的)伪代码中,我正在尝试做这样的事情:
SELECT * FROM posts WHERE author=(SELECT followed FROM connections WHERE user='A')
它会发布B,C,D(又名A跟随)的东西
任何人都有可能知道如何将其写为实际的MySQL查询吗?我读过的东西看起来已经很混乱了,我真的不明白我会怎么做!
非常感谢你!任何帮助是极大的赞赏! :)
答案 0 :(得分:1)
您可以使用IN
SELECT *
FROM posts
WHERE author IN (SELECT followed FROM connections WHERE user = 'A')
或JOIN
(我更喜欢)
SELECT DISTINCT a.*
FROM posts a
INNER JOIN connections b
ON a.author = b.followed
WHERE b.user = 'A'
答案 1 :(得分:1)
使用联接:
SELECT p.*
FROM connections c
JOIN posts p
ON c.followed = p.author
WHERE user='A'
请注意,connections
表首先列出,因此user
上的索引可以由where子句驱动使用。