SQL中not in有Null值时
类别:数据库 浏览量:1668
时间:2016-6-20 SQL中not in有Null值时
SQL中not in有Null值时一、实例数据
Table_A表和Table_B表
CREATE TABLE [dbo].[Table_A](
[ID] [nchar](10) NULL,
[Name] [nchar](10) NULL
) ON [PRIMARY]
GO
ID Name
001 张三
002 李四
003 王五
CREATE TABLE [dbo].[Table_B](
[ID] [nchar](10) NULL,
[Name] [nchar](10) NULL
) ON [PRIMARY]
GO
ID Name
NULL 张三
002 李四
NULL 王五
二、查询出在Table_A表中不在Table_B表中的记录
1、错误SQL写法 (没有任何结果返回)
SELECT *
FROM dbo.Table_A AS a
WHERE a.ID NOT IN ( SELECT b.ID
FROM dbo.Table_B AS b)
2、错误原因
(1)、如果null参与算术运算,则该算术表达式的值为null。(例如:+,-,*,/ 加减乘除)
(2)、如果null参与比较运算,则结果可视为false。(例如:>=,<=,<> 大于,小于,不等于)
(3)、如果null参与聚集运算,则聚集函数都置为null。除count(*)之外。
(4)、如果在not in子查询中有null值的时候,则不会返回数据。
例如
SELECT *
FROM dbo.TableA AS a
WHERE a.id NOT IN ( 2, NULL )
--等同于:
SELECT *
FROM Table_A AS a
WHERE a.id <> 2
AND a.ID <> NULL
--由于NULL值不能参与比较运算符,导致条件不成立,查询不出来数据。
3、正确SQL写法
--写法1
SELECT *
FROM dbo.Table_A AS a
WHERE a.ID NOT IN ( SELECT b.ID
FROM dbo.Table_B AS b
WHERE b.ID IS NOT NULL ) --排除NULL值参与运算符比较
--写法2
SELECT *
FROM dbo.Table_A AS a
WHERE NOT EXISTS ( SELECT *
FROM dbo.Table_B AS b
WHERE a.ID = b.ID )
标签:SQL
您可能感兴趣
- sqlserver多表查询(sqlserver 树形结构查询单表实例代码)
- sqlifnull如何使用(在 SQL 语句中处理 NULL 值的方法)
- MySQL批量执行SQL脚本文件
- mysql8.0.16安装步骤图解(mysql 8.0.22 安装配置图文教程)
- mysql怎么设置存储记录(MySQL 的一行记录是怎么存储的?)
- mysql8.0.23.0官方安装手册(MySQL8.0.23安装超详细教程)
- mysqltimestamp如何比较(为什么MySQL 使用timestamp可以无视时区问题.)
- MySQL中NULL和空值的区别
- hive分析后如何录入mysql(hive从mysql导入数据量变多的解决方案)
- mysql日期用法(MySQL DATE_ADD和ADDDATE函数实现向日期添加指定时间间隔)
- mysql分页查询有几种(MySQL 查询的排序、分页相关)
- mysql插入数据错误代码(教你解决往mysql数据库中存入汉字报错的方法)
- mysql长连接释放和不释放的问题(解决MySQL存储时间出现不一致的问题)
- sqlserver字符串截取填充(SQL Server实现split函数分割字符串功能及用法示例)
- dedecms v5.7使用教程(织梦dedecms数据库类$dsql使用方法步骤)
- docker部署mysql多实例(Docker部署mysql一主一从的操作方法)
- 相声转行影帝,被何晴抛弃,甩10年女友闪婚生子,刘威不靠谱情史(相声转行影帝被何晴抛弃)
- 岳云鹏不说相声,改行演员了 网友 快回来说相声(岳云鹏不说相声)
- 乔欣首演古装大女主,颜值演技双在线(乔欣首演古装大女主)
- 于正又推女性古装大剧 杨蓉乔欣演女配,两位女主成 重头戏(于正又推女性古装大剧)
- 乔欣古装女主戏获热度 作为女主,却没吃到红利(乔欣古装女主戏获热度)
- 爱情是什么(爱情是什么最经典的话)
热门推荐
- 织梦模板修改列表(手把手教你制作织梦自定义公告模板)
- 常见的php五大运行模式详解(php设计模式之职责链模式定义与用法经典示例)
- dede标签使用(解决{dede:arclist keyword='动态获取关键词'})
- mysql优化使用方法(详解Mysql函数调用优化)
- python分支的描述(学习python分支结构)
- http服务器使用教程(HTTP与HTTP协作的Web服务器访问流程图解)
- dedecms搜索功能怎么设置详细(删除dedecms 5.7里面烦人的织梦链的方法)
- sql导入数据库脚本(使用用SQL语句从电脑导入图片到数据库的方法)
- js如何实现定时器功能(js实现0ms延时定时器的几种方式)
- sql语句无效数字(SQL中写入包含有英文单引号“ '' ”失败问题深入详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9