使用MySQL返回数据作为第二次查询的输入?

时间:2013-03-31 11:37:35

标签: mysql

我正在尝试构建各种各样的“新闻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查询吗?我读过的东西看起来已经很混乱了,我真的不明白我会怎么做!

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

2 个答案:

答案 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子句驱动使用。