in 条件中包含null值查询异常

wtujedp 2016-08-12 03:31:04
create table A
(
col1 varchar(20)
)

insert into A select null

insert into A select 'A'
insert into A select 'B'


create table B
(
col1 varchar(20)
)

insert into B select 'A'
insert into B select 'B'
insert into B select 'C'

--查询异常
select *from b where col1 not in (select col1 from A)
查看“执行计划”谓词加了b.col1 is null or a.col1 is null or a.col1=b.col1
我想这个肯定是出现异常的原因所在的,请高手解释一下,谢谢

--查询正常
select *from B t1 where not exists (select col1 from A where col1=t1.col1 )
...全文
630 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
薛定谔的DBA 2016-08-12
  • 打赏
  • 举报
回复
Ginnnnnnnn 2016-08-12
  • 打赏
  • 举报
回复
因为mssql 是判断3值逻辑,所以查询数据里面有null 值判断只能使用not exists ,使用Not in 的话是什么都不会返回的。
中国风 2016-08-12
  • 打赏
  • 举报
回复
用NOT IN有NULL时这样用

select *from b where  col1 not in (select col1 from A WHERE Col1 IS NOT NULL)
中国风 2016-08-12
  • 打赏
  • 举报
回复
有NULL时要用NOT EXISTS去判断效率高

SELECT * FROM b WHERE NOT EXISTS(SELECT 1 FROM A WHERE Col1=b.COl1)
giftsf 2016-08-12
  • 打赏
  • 举报
回复
select *from b where col1 not in (select col1 from A where col1 is not null ) 有null in就废了
卖水果的net 2016-08-12
  • 打赏
  • 举报
回复
是有这个情况,这个就是细节;
PowerBI系列之Power Query专题1.  获取数据 数据源种类介绍和获取Excel数据源输入数据和拷贝数据:创建辅助表解析Json/XML数据格式获取Web网页数据和URL添加动态参数连接数据的四种模式:Import、DirectQuery、Live Connection、Dual双 属于混合模式连接数据库:Sql server、 Mysql(直连但是必须先安装一个mysql插件)DirectQuery直连查询:Sql serverODBC方式获取数据表关联或多个Sql或调用存储过程获取数据SQL动态传参和自定义函数: sql使用参数或数据库名称使用参数连接Sharepoint和OneDrive数据源连接Dataset和Dataflow 替换本地数据源为Sharepoint数据源并保留数据处理操作 终止当前数据刷新Loading:Cancel Query数据源设置-重置数据连接凭证PBIDS连接数据源创建和使用报表模块(输入或列表)利用报表模板和参数控制线下报表数据权限DirectQuery启用自动页面刷新和更改检测管理聚合表提高DirectQuery查询性能动态M查询参数提高DirectQuery查询性能添加数据刷新时间 DateTime.LocalNow()和Getdate()2.  数据清洗和M语言M语言和官方文档介绍PowerQuery查阅M函数:=#shared, Ctrl+Space提示数据清洗之常用技能:提升标题、更改数据类型、保留删除错误或空行,删除重复项、选择列和删除列、填充单元格、合并列、拆分、提取、替换、条件替换、添加自定义列,添加条件列、添加索引列、分组、添加年月日列、追加和合并查询透视和逆透视以及转置合并单元格的Excel文件处理导入文件夹多Excel文件并合并解决多文件合并列顺序不一致使用参数和函数批量导入文件 文本提取文、英文、数字等处理双引号转义 列拆分详解解决列名改变错误解决列丢失错误动态显示、排序和重命名列为所有列名添加前缀列名字母大写和分隔符调整Trim标题列的多余空格如何处理load数据错误为什么load的Excel数据有null空行为什么load的Excel数据标题在第二行灵活添加占位符规范同类相似数据数据按多列排序为分组添加Index序号分组内合并诊断工具分析数据处理过程PowerQuery小技巧分享 新冠病例活动轨迹地图标识 

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧