2016-08-07 177 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