mysql查询,以获取帖子ID,如twitter homefeed,它将显示我们的帖子以及下面的帖子

mysql查询,以获取帖子ID,如twitter homefeed,它将显示我们的帖子以及下面的帖子,mysql,join,Mysql,Join,我有两个表的名称和职位如下 posts表的结构如下所示 id | uid |文本|时间 下表具有userid和followers用户id下表的结构为 uid |以下ID 现在,我需要编写一个查询,以便获得类似twitter homefeed的帖子ID,它将显示我们的帖子以及下面的帖子 SELECT posts.id FROM posts INNER JOIN follows ON posts.uid = follows.followingid AND follows.uid = "'.$cu

我有两个表的名称和职位如下

posts表的结构如下所示

id | uid |文本|时间

下表具有userid和followers用户id下表的结构为

uid |以下ID

现在,我需要编写一个查询,以便获得类似twitter homefeed的帖子ID,它将显示我们的帖子以及下面的帖子

SELECT posts.id FROM posts 
INNER JOIN follows ON posts.uid = follows.followingid 
AND follows.uid = "'.$currentuser.'" OR posts.uid = "'.$currentuser.'"

但如果下表中没有条目,则此操作无效

您基本上希望获取当前用户的所有帖子以及该用户的所有帖子,然后是当前用户。下面是代码,我使用union。首先选择当前用户的所有帖子,然后选择用户的帖子,然后选择当前用户的帖子

select posts.id
from posts
where posts.uid = "'.$currentuser.'"

union all

select posts.id
from posts
inner join follows
on follows.followingid = posts.uid
where follows.uid = "'.$currentuser.'"

尝试使用
左连接来更改,如:

SELECT posts.id FROM posts 
   LEFT JOIN follows ON posts.uid = follows.followingid 
      AND follows.uid = "'.$currentuser.'" 
WHERE posts.uid = "'.$currentuser.'"

您正在强制执行内部联接,如果下表中不存在任何记录,则该联接将不会返回任何结果,因此问题的根源是内部联接。也许您应该将
following
更改为
follower
first.:)@domanokz最好我把它改成followid,因为两者都让我困惑。@Vasanth-你的意思是追随者的评论也在posts表中?@domanokz不是评论只是posts..没有左连接不起作用,因为它得到了所有的posts id,不考虑条件。立即尝试查询-我将posts.uid条件放在
WHERE
子句中,而不是
ON
子句中。我现在尝试了它。同样的问题,不管条件如何,它都会列出所有的帖子。不管条件如何,没有左连接都不起作用,因为它会获取所有的帖子id。