gpt4 book ai didi

mysql - 左外连接不返回主表中的所有记录

转载 作者:可可西里 更新时间:2023-11-01 06:32:10 26 4
gpt4 key购买 nike

当我执行左外连接时,我希望在添加连接表之前获得查询将返回的所有记录,但它只返回与连接表匹配的记录(即:没有记录 '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 保留的非匹配行的 documentation.status 都将具有 NULL 值,因此您的 documentation.status != 3 条件会将这些过滤掉(表达式 NULL !=3 的结果是 unknown 而不是 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 条件中。

关于mysql - 左外连接不返回主表中的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5236078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com