我有两个表,一个是setID,每个userID的设置值,另一个是userID,他们的电子邮件和用户名。
我正在尝试加入特定设置的值,问题是并非所有用户都将此特定设置与其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
我需要做什么才能让所有用户都在列表中?
答案 0 :(得分:3)
您的where
子句将left join
变为inner 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
答案 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