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
您可能感兴趣
- mysql带log的版本(聊聊MYSQL中Redo Log是什么?)
- windows7mysql服务无法启动(Windows系统下MySQL无法启动的万能解决方法)
- SqlServer 按时间段查询问题(SqlServer 按时间段查询问题)
- mac版本php环境搭建(在Mac OS X中配置Apache+PHP+MySQL运行环境的详细步骤)
- mysql长连接释放和不释放的问题(解决MySQL存储时间出现不一致的问题)
- python怎么操作mysql(详解Python的数据库操作pymysql)
- mysql索引原理及调优(mysql高级学习之索引的优劣势及规则使用)
- mysql中怎么删除整张表(MySQL如何优雅的删除大表实例详解)
- python与mysql的联系(MySQL和Python交互的示例)
- mysql面试题及答案100题(几个MySQL高频面试题的解答)
- sql server设置标识列(Sql Server 如何去掉内容里面的Html标签)
- sqlserver2008远程连接设置(如何开启SqlServer 远程访问)
- mysql顺序排序(Mysql 中文排序规则说明)
- sqlservercount函数的用法(SQL Server中row_number函数的常见用法示例详解)
- mysql高级概念(MySQL 自定义变量的概念及特点)
- rename重命名mysql表(MySQL 重命名表的操作方法及注意事项)
- 东南亚有哪个国家(东南亚有哪个国家最发达)
- 东南亚安全吗(好不好挣钱)
- 潘长江小品《照亮全家福》台词剧本完整版(潘长江小品照亮全家福台词剧本完整版)
- 一窗通办政务服务小品剧本(一窗通办政务服务小品剧本)
- 刘韬涛丁子贺小品《根治低头族》台词剧本(刘韬涛丁子贺小品根治低头族台词剧本)
- 看完《夺冠》,黄渤的演技我实在夸不起来,彭昱畅反令人惊喜(黄渤的演技我实在夸不起来)
热门推荐
- php无法读取txt文件(php写入txt乱码的解决方法)
- azure部署教程(使用 Azure Container Registry 储存镜像的问题)
- python中内存管理机制(Python中整数的缓存机制讲解)
- python 简单算法(python实现爬山算法的思路详解)
- yii框架使用教程(Yii框架连表查询操作示例)
- mysql各种查询方式(mysql查询的控制语句图文详解)
- sql数值函数大全(sql中mod函数取余数的用法)
- HttpWebResponse类的属性和方法
- html5标签图片(HTML5图片层叠的实现示例)
- python闭包的讲解(详解python函数的闭包问题内部函数与外部函数详述)