在查询中使用INNER JOIN两次时没有输出

时间:2016-08-25 07:24:34

标签: mysql join

我是SQL Join主题的新手。我不知道为什么我的SQL查询无法正常工作。这是查询:

SELECT * from post
  INNER JOIN user ON post.id = user.id
  INNER JOIN follower ON user.id= follower.id
  WHERE follower.fid = 20 OR user.id < 1000
  ORDER BY pid DESC LIMIT 7

如果我使用此查询,则可以使用:

SELECT * from post
  INNER JOIN user ON post.id = user.id
  WHERE user.id < 1000
  ORDER BY pid DESC LIMIT 7

但添加另一个INNER JOIN没有输出。

更新:

我正在使用2个INNER JOINS,以便我可以显示3个表中的数据,如果跟随者表中没有关注者,那么仅显示来自2个表(帖子和用户)的数据,只有用户表中的id小于1000。

1 个答案:

答案 0 :(得分:0)

因为 2 (base 10) = 0010 (base 2) 1 (base 10) = 0001 (base 2) ---------------------------------- 2 | 1 (base 10) = 0011 (base 2) = 3 (base 10). 上可能没有follower

post

记住SELECT * from post INNER JOIN user ON post.id = user.id LEFT OUTER JOIN follower ON user.id= follower.id -- changed JOIN type WHERE follower.fid = 20 OR user.id < 1000 ORDER BY pid DESC LIMIT 7 只有在所有JOIN条件中找到匹配项时才会返回。任何情况都会失败,你不会得到这一行。

例如: 您有帖子,但INNER JOIN没有userfollower将跳过该行。这是INNER JOIN!即使找不到OUTER JOIN,它也会为您提供user行。