2016-08-25 67 views
0

我是SQL新手入門主題。我不知道爲什麼我的SQL查詢無法正常工作。下面是該查詢:在查詢中使用INNER JOIN兩次時無法輸出

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內部聯接,這樣我可以從3表顯示的數據是否有跟隨表中沒有的追隨者則顯示從2個表(POST和用戶),只有在數據ID中用戶表是小於1000

+0

定義「作品」。你期待它做什麼?它有什麼作用? – tadman

+0

你能舉出3個表中數據的例子嗎? – Linkan

+0

當您使用第二個INNER JOIN時,只會得到用戶和追隨者都匹配的結果。如果你想從追隨者不匹配的用戶數據,你應該使用LEFT JOIN。 – Linkan

回答

0

它,因爲你可能沒有followerpost

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 

記住INNER JOIN只返回如果片ds在所有JOIN條件下匹配。任何情況都會失敗,你不會得到這一行。

例如: 你有一個職位,但user沒有followerINNER JOIN將跳過該行。這裏來了OUTER JOIN!它會給你user行,即使找不到follower

+0

爲什麼使用左連接? –

+0

此代碼是否正常工作,因爲我需要看到我的更新 –

+0

@Shaharyar你已經忘記了一些東西 – Strawberry