Mysql查询多次返回每个结果

时间:2018-03-25 13:32:31

标签: mysql

我想展示我所关注的人的所有帖子,包括我自己的帖子。虽然它按预期工作,但我有一个问题:我多次获得相同的帖子。

这是我的问题:

SELECT posts.id, posts.body, posts.posted_at, posts.postimg, posts.likes, users.`username` 
FROM users, posts, followers
WHERE (posts.user_id = followers.user_id OR posts.user_id = :userid)
       AND users.id = posts.user_id
       AND follower_id = :userid
ORDER BY posts.posted_at DESC;

任何人都可以帮助我吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

原因是在这种情况下:

str2double

对于您关注的每个用户,您将获得自己的所有帖子,从而创建自己帖子的副本。

您应该使用UNION(ALL)查询。要避免完整的查询重复,您可以先在子查询中选择所有用户ID:

WHERE (posts.user_id = followers.user_id
        OR posts.user_id = :userid)

然后将其与您的表格连接:

    SELECT followers.user_id
    FROM followers
    WHERE followers.follower_id = :userid
    UNION ALL SELECT :user_id

答案 1 :(得分:0)

你应该尝试使用:

  

选择DISTINCT(字段)

     

从....

     

哪里......

对于每个相同的结果,DISTINCT只显示一行。

我认为您的查询就像交叉联接一样。

我希望这可以帮到你,对不起我的英语。