从表中选择all,其中value =来自另一个表的多个值

时间:2014-10-21 09:45:24

标签: php mysql sql

我正在尝试选择由用户关注的帖子发布的帖子。

我的帖子表如下:

posts structure

我的粉丝表如下:

followers structure

posts表中的“creator”列是发布它的用户的ID。关注者表中的“跟随者”列是跟随“跟随”列的用户。

我正在使用此查询(无效)从创建者=用户所关注的所有用户的帖子中选择所有内容:

  

SELECT * FROM posts WHERE creator =(SELECT跟随FROM粉丝   WHERE follower = 用户ID )ORDER BY datetime DESC;

理论上:

SELECT * FROM posts WHERE creator=1 or 2 or 3 or 4...or 998 or 999

等等。

最好的方法是什么?

谢谢!

3 个答案:

答案 0 :(得分:4)

尝试将查询更改为:

SELECT * FROM posts WHERE creator in (SELECT following FROM followers WHERE follower=the user's id) ORDER BY datetime DESC;

答案 1 :(得分:1)

在这种情况下使用联接可以提高查询的性能。我推荐以下内容:

SELECT * FROM posts p
INNER JOIN followers f 
ON p.creator = f.following
WHERE f.follower = <user_id>
ORDER BY datetime DESC;

答案 2 :(得分:1)

试试吧

SELECT * 
FROM posts p, followers f 
WHERE 
  p.creator=f.following
  and f.follower ='user_id' 
ORDER BY p.datetime DESC;