SQL中EXCEPT和Not IN的区别
2013-01-22 17:51
501 查看
SQL中EXCEPT和Not in的区别? 我们一起来看看。
初始化两张表:
CREATE TABLE tb1(ID
int)
INSERT tb1
SELECT NULL
UNION ALL
SELECT NULL
UNION ALL
SELECT NULL
UNION ALL
SELECT 1
UNION ALL
SELECT 2
UNION ALL
SELECT 2
UNION ALL
SELECT 2
UNION ALL
SELECT 3
UNION ALL
SELECT 4
UNION ALL
SELECT 4
CREATE TABLE tb2(ID
int)
INSERT tb2
SELECT NULL
UNION ALL
SELECT 1
UNION ALL
SELECT 3
UNION ALL
SELECT 4
UNION ALL
SELECT 4
A:
SELECT *
FROM tb1
SELECT *
FROM tb2
SELECT *
FROM tb1 EXCEPT
SELECT * FROM tb2;
SELECT *
FROM tb1 WHERE id
NOT IN(SELECT id
FROM tb2);--得不到任何值
结果:
B、我先删除表tb1的是NULL值的行
--DELETE
FROM tb1 where id
is null
B、来
SELECT *
FROM tb1 EXCEPT
SELECT * FROM tb2;
SELECT *
FROM tb1 WHERE id
NOT IN(SELECT id
FROM tb2);
结果:
以上例子说明:
except会去重复,
not in 不会(除非你在select中显式指定)
except用于比较的列是所有列, 除非写子查询限制列,
not in 没有这种情况
表tb2中如果有null值的话,not in查询得不到值(如:A、B)
表tb1中如果有null值,not in不会查询出这个null值(如:D),而except可以查询到
当然通过对子查询指定不为NULL的话,NOT
IN自然会得到值,如:
SELECT *
FROM tb1 WHERE id
NOT IN(SELECT id
FROM tb2 WHERE ID
IS NOT
NULL);
这里是需要注意的,如果你的字段运行为NULL,又欲使用NOT IN那么就需要这么做
NOT IN () 的条件中出现NULL的话就查不到任何值
初始化两张表:
CREATE TABLE tb1(ID
int)
INSERT tb1
SELECT NULL
UNION ALL
SELECT NULL
UNION ALL
SELECT NULL
UNION ALL
SELECT 1
UNION ALL
SELECT 2
UNION ALL
SELECT 2
UNION ALL
SELECT 2
UNION ALL
SELECT 3
UNION ALL
SELECT 4
UNION ALL
SELECT 4
CREATE TABLE tb2(ID
int)
INSERT tb2
SELECT NULL
UNION ALL
SELECT 1
UNION ALL
SELECT 3
UNION ALL
SELECT 4
UNION ALL
SELECT 4
A:
SELECT *
FROM tb1
SELECT *
FROM tb2
SELECT *
FROM tb1 EXCEPT
SELECT * FROM tb2;
SELECT *
FROM tb1 WHERE id
NOT IN(SELECT id
FROM tb2);--得不到任何值
结果:
B、我先删除表tb1的是NULL值的行
--DELETE
FROM tb1 where id
is null
B、来
SELECT *
FROM tb1 EXCEPT
SELECT * FROM tb2;
SELECT *
FROM tb1 WHERE id
NOT IN(SELECT id
FROM tb2);
结果:
以上例子说明:
except会去重复,
not in 不会(除非你在select中显式指定)
except用于比较的列是所有列, 除非写子查询限制列,
not in 没有这种情况
表tb2中如果有null值的话,not in查询得不到值(如:A、B)
表tb1中如果有null值,not in不会查询出这个null值(如:D),而except可以查询到
当然通过对子查询指定不为NULL的话,NOT
IN自然会得到值,如:
SELECT *
FROM tb1 WHERE id
NOT IN(SELECT id
FROM tb2 WHERE ID
IS NOT
NULL);
这里是需要注意的,如果你的字段运行为NULL,又欲使用NOT IN那么就需要这么做
NOT IN () 的条件中出现NULL的话就查不到任何值
相关文章推荐
- SQL中EXCEPT和NOT IN的区别
- SQL中EXCEPT和Not in的区别?
- SQL中EXCEPT和Not in的区别?
- SQL中EXCEPT和Not in的区别?
- SQL中EXCEPT和Not in的区别?
- SQL中EXCEPT和Not in的区别?
- SQL中EXCEPT和Not In的区别
- SQL中EXCEPT和Not in的区别
- sql中的in与not in,exists与not exists的区别
- SQL中EXCEPT和Notin的区别
- sql里面EXCEPT、INTERSECT的区别
- 浅谈sql中的in与not in,exists与not exists的区别
- SQL中Union,Intersect,Except的区别
- SQLServer Execpt和not in 性能区别
- sql中的in与not in,exists与not exists的区别
- 浅谈sql中的in与not in,exists与not exists的区别
- sql里的exists与in、not exists与not in的区别(转:http://blog.csdn.net/jkptthui/archive/2009/12/17/5024779.aspx)
- SQL查询——NOT IN与NOT EXIST的区别
- 浅谈sql中的in与not in,exists与not exists的区别
- 浅谈sql中的in与not in,exists与not exists的区别以及性能分析