0

我正在尝试构建各种“新闻提要”,但为了做到这一点,我在编写查询时遇到了麻烦!

简而言之,如果用户 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 查询吗?我读过的东西似乎已经很混乱了,我真的不明白我将如何去做!

非常感谢你!任何帮助是极大的赞赏!:)

4

2 回答 2

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'
于 2013-03-31T11:38:58.630 回答
1

使用连接:

SELECT p.*
FROM connections c
JOIN posts p
  ON c.followed = p.author
WHERE user='A'

请注意,该connections表首先列出,因此user可以使用 where 子句驱动的索引。

于 2013-03-31T11:43:16.173 回答