首页 > 解决方案 > 如何 LEFT JOIN 两个简单的表,但不丢弃第二个表中的数据?

问题描述

我的 SQL:http ://sqlfiddle.com/#!9/350efb/3

我正在尝试 LEFT JOIN 两个表,并在我的查询中过滤它们的值。但是,第二个表中有与第一个表不匹配的行。NULL如果缺少行,我想返回。

预期结果是:

oid bid name              oid    uid  value
1   1   Book 1  Name 1    1      1    User 1 OID 1
2   1   Book 1  Name 2    NULL   NULL NULL
3   1   Book 1  Name 3    NULL   NULL NULL
4   1   Book 1  Name 4    NULL   NULL NULL
5   1   Book 1  Name 5    5      1    User 1 OID 5

但是,在链接中看到的实际结果中,我只有两行。我的所有带有 NULL 的行都没有返回。

问:如何达到我的预期输出?我试图添加OpeningUser.uid is NULL,但没有奏效。

我目前的查询是:

select * from Opening
LEFT JOIN OpeningUser ON Opening.oid = OpeningUser.oid
WHERE Opening.bid=1 AND (OpeningUser.uid=1 OR OpeningUser.uid is NULL)
ORDER BY Opening.oid

标签: sql

解决方案


推荐阅读