我是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。
答案 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
没有user
。 follower
将跳过该行。这是INNER JOIN
!即使找不到OUTER JOIN
,它也会为您提供user
行。