Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL左连接在哪里_Mysql_Sql - Fatal编程技术网

Mysql SQL左连接在哪里

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

我有两个表,一个表包含每个用户ID的设置ID和设置值,另一个表包含用户ID、他们的电子邮件和用户名

我正在尝试加入特定设置的值,问题是并非所有用户都将此特定设置绑定到其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

要获得列表中的所有用户,我需要做什么?

您的
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
可能重复的