博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NULL对IN的查询的影响及解决示例.sql
阅读量:7237 次
发布时间:2019-06-29

本文共 987 字,大约阅读时间需要 3 分钟。

--1. NULL 对 IN(NOT IN) 查询的影响
--测试数据
DECLARE @1 TABLE(col1 int)
INSERT @1 SELECT 1
UNION ALL SELECT NULL
UNION ALL SELECT 2
DECLARE @2 TABLE(col1 int)
INSERT @2 SELECT 1
--查询
SELECT [@1总记录数]=COUNT(*) FROM @1
--结果: 3
SELECT [@1在@2表中存在的记录数]=COUNT(*) FROM @1 a
WHERE col1 IN(SELECT col1 FROM @2)
--结果: 1
SELECT [@1在@2表中存在的记录数]=COUNT(*) FROM @1 a
WHERE col1 NOT IN(SELECT col1 FROM @2)
--结果: 1
--在@2中插入一条NULL值
INSERT @2 SELECT NULL
SELECT [@1在@2表中存在的记录数]=COUNT(*) FROM @1 a
WHERE col1 IN(SELECT col1 FROM @2)
--结果: 1
SELECT [@1在@2表中存在的记录数]=COUNT(*) FROM @1 a
WHERE col1 NOT IN(SELECT col1 FROM @2)
--结果: 0
GO
--2. 使用 EXISTS 代替IN
--测试数据
DECLARE @1 TABLE(col1 int)
INSERT @1 SELECT 1
UNION ALL SELECT NULL
UNION ALL SELECT 2
DECLARE @2 TABLE(col1 int)
INSERT @2 SELECT 1
UNION ALL SELECT NULL
SELECT [@1在@2表中存在的记录数]=COUNT(*)
FROM @1 a
WHERE EXISTS(SELECT * FROM @2 WHERE col1=a.col1)
--结果: 1
SELECT [@1在@2表中存在的记录数]=COUNT(*)
FROM @1 a
WHERE NOT EXISTS(SELECT * FROM @2 WHERE col1=a.col1)
--结果: 2

转载地址:http://nylfm.baihongyu.com/

你可能感兴趣的文章
装饰者模式
查看>>
集成计算引擎在大型企业绩效考核系统的应用方案
查看>>
150. Evaluate Reverse Polish Notation
查看>>
SpringBoot 实战 (十一) | 整合数据缓存 Cache
查看>>
css实现三栏布局的几种方法及优缺点
查看>>
proxychains是怎么工作的
查看>>
React16性能改善的原理一
查看>>
网页水印SDK的实现
查看>>
js的观察者模式
查看>>
函数柯里化
查看>>
手把手教你搭建智能合约测试环境、开发、编译、部署以及如何通过JS调用合约方法...
查看>>
Flex 布局教程
查看>>
固定宽度布局开发WebApp如何实现多终端下自适应?
查看>>
伟大的Scrum团队的特征
查看>>
2019春节防坑指南之抢票陷阱(文末有彩蛋)
查看>>
深入node.js-浏览器缓存机制
查看>>
解决IOS中input失焦后,页面上移,点击不了问题
查看>>
【C】 23_#error 和 #line 使用分析
查看>>
浅谈 Java 10 ,你可能不知道的五件事
查看>>
IT 人能在一线城市里生活一辈子吗?
查看>>