2016-08-07 235 views
1

我有兩個表,其中一個帶有settingID和每個用戶ID的設置值,另一個帶有userID,他們的電子郵件和用戶名。SQL左加入在哪裏

我想加入特定設置的值,問題是並非所有的用戶都有這個特定的設置綁定到他們的ID,所以我最終得到的行比我實際需要的少。

Table 1 
userID settingID settingValue 

Table 2 
userID userDOB userEmail userName 

我的查詢看起來是這樣的:

SELECT u.userID, u.userEmail, s.settingValue 
FROM users u 
LEFT JOIN userSettings s ON u.userID = s.userID 
WHERE s.settingID = 1 

什麼我需要做的就是所有在列表中的用戶?

+1

的可能的複製[左聯同Where子句(http://stackoverflow.com/questions/4752455 /左聯接與 - where子句) –

回答

3

您的where條款將您變成left joininner join。將在條件JOIN

SELECT u.userID, u.userEmail, s.settingValue 
FROM users u 
LEFT JOIN userSettings s ON u.userID = s.userID 
         AND s.settingID = 1 
0

可以使用UNION ALL子句組合兩個JOINS

SELECT u.userID, u.userEmail, s.settingValue 
    FROM users u 
    LEFT userSettings s 
    ON u.userID = s.userID 
UNION ALL 
    SELECT u.userID, u.userEmail, s.settingValue 
    FROM users u 
    RIGHT userSettings s 
    ON u.userID = s.userID