sql - 如果 JOINED 值为空,则 LEFT Join 不会从主表中提取记录
问题描述
假设我有一个如下所示的 tableA:
ID Name IssueID
1 Bob 2
2 John Null
我有一个名为 tblRef 的参考表,其中包括以下列:
IssueID IssueDesc
2 Not Completed
3 Completed
我的查询看起来像这样,
Select a.Id,a.Name, I.IssueDesc from tableA a Left Join tblRef I on a.issueId =
I.IssueDesc where IssueID not in (2)
如果我这样做,我看不到 tableA 中 IssueID 为 NULL 的记录,有没有办法把它拉起来?或者更确切地说,为什么它不提高记录?
解决方案
NULL
“失败”几乎所有的比较。实际发生的是结果是NULL
,并且行被过滤掉了。
在 SQL Server 中,您需要对此进行显式测试:
where IssueID not in (2) OR IssueID is null
请记住,它的语义NULL
通常意味着“未知”值而不是“缺失”值。当你有NULL not in (2)
时,语义是“不在(2)中”。结果是“未知”,因为值可能是 2。
推荐阅读
- google-chrome - Bing 的查询搜索引擎 URL 是什么?
- python - 在 Heroku 上的 Django / Python 应用程序中使用 Node 模块
- javascript - javascript button.style.backgroundColor 返回 "" 直到被点击
- graph - 在条形图中仅绘制频率最高的名称
- compilation - 明确命名的条件通常会被内联吗?
- jdbc - 如何配置 Jmeter 以使用半径身份验证连接到 oracle 数据库
- python - Python AttributeError:“系列”对象没有属性“isdigit”
- node.js - 由于文件系统,如何正确构建微服务
- node.js - HTTPS 模块中内置 NodeJS 的 Multipart/form-data 发布请求
- php - 有没有更好的方法来循环 6 层 JSON 对象和多个嵌套数组值,其中包含嵌套对象?