当我执行左外连接时,我希望在添加连接表之前获取查询将返回的所有记录,但它仅返回与连接表匹配的记录(即:表中不存在“092387”的记录) “文档”,所以我只想为该记录的“文件名”字段返回 null。)我做错了什么?
mysql> select documentation_reference.ref_docnumber
, documentation.filename
from documentation_reference
left outer join documentation on ref_docnumber=documentation.docnumber
where documentation_reference.docnumber='TP-036'
and documentation.status!=3;
+---------------+-----------------+
| ref_docnumber | filename |
+---------------+-----------------+
| SOP-0042 | SOP-0042r39.pdf |
+---------------+-----------------+
1 row in set (0.00 sec)
mysql> select ref_docnumber
from documentation_reference
where documentation_reference.docnumber='TP-036';
+----------------------+
| ref_docnumber |
+----------------------+
| 092387 |
| 1100218B |
| Applicable Item Spec |
| SOP-0042 |
+----------------------+
4 rows in set (0.00 sec)
您的 where 子句正在将外部联接转换回内部联接。
保留的不匹配行outer join
都会有NULL
值documentation.status
所以你的documentation.status != 3
条件将过滤掉这些(表达式的结果NULL !=3
is unknown
not true
).
为了避免这个问题,请使用
select documentation_reference.ref_docnumber,
documentation.filename
from documentation_reference
left outer join documentation
on ref_docnumber = documentation.docnumber
and documentation.status != 3
where documentation_reference.docnumber = 'TP-036'
请注意,documentation.status != 3
谓词被移动到JOIN
健康)状况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)