Mysql SQL左连接在哪里
我有两个表,一个表包含每个用户ID的设置ID和设置值,另一个表包含用户ID、他们的电子邮件和用户名 我正在尝试加入特定设置的值,问题是并非所有用户都将此特定设置绑定到其ID,因此我最终得到的行数少于实际需要的行数Mysql SQL左连接在哪里,mysql,sql,Mysql,Sql,我有两个表,一个表包含每个用户ID的设置ID和设置值,另一个表包含用户ID、他们的电子邮件和用户名 我正在尝试加入特定设置的值,问题是并非所有用户都将此特定设置绑定到其ID,因此我最终得到的行数少于实际需要的行数 Table 1 userID settingID settingValue Table 2 userID userDOB userEmail userName 我的查询如下所示: SELECT u.userID, u.userEmail, s.settingValue FROM
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
要获得列表中的所有用户,我需要做什么?您的
where
子句将左连接
转换为内部连接
。将条件放入联接中
SELECT u.userID, u.userEmail, s.settingValue
FROM users u
LEFT JOIN userSettings s ON u.userID = s.userID
AND s.settingID = 1
您可以使用
UNION ALL
子句组合两个联接
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
可能重复的