我试图显示数据库中所有用户的完整列表以及第二个表中的其他信息,具体取决于他们是否在第二个表中有记录
我正在使用MySQL,我尝试了一些左联接/右联接联合组合,但没有任何帮助
SELECT users.id, users.name, success.URL_ID, success.docreqid FROM users
LEFT JOIN success ON users.id = success.userid
where docreqid IS NULL
union
SELECT users.id, users.name, success.URL_ID, success.docreqid FROM users
RIGHT JOIN success ON users.id = success.userid
where docreqid = 1;
我有一个10个人的小桌子。我的数据库中只有一个用户在成功tbl中记录了docreqid'1'。 我想要一张所有用户的表格,以及他们提交的表单的URL_ID。
上面的代码对此非常有效。
如果我将最后一行更改为:
where docreqid = 2;
我只得到9个结果(缺少记录docreqid'1'的用户)。
我希望该表在URL_ID和docreqid列中显示所有10个用户和'NULL',直到他们完成所需的操作为止。
答案 0 :(得分:0)
left join
应该执行您想要的操作:
SELECT u.id, u.name, s.URL_ID, s.docreqid
FROM users u LEFT JOIN
success s
ON u.id = s.userid AND s.docreqid = 1;
LEFT JOIN
返回第一个表中的所有行-没有WHERE
正在过滤结果。 ON
仅匹配success
子句中满足附加条件的ON
中的行。