相关文章推荐
爱跑步的柳树  ·  博士申请 | ...·  1 年前    · 
小胡子的羽毛球  ·  bootstrap-treeview ...·  1 年前    · 

一. 表结构和初始化数据

  1. 表结构
    在这里插入图片描述
  2. 初始化数据
insert into test_in(name, hobby, sex, school) values('张一','打球',1,'北京大学');
insert into test_in(name, hobby, sex, school) values('张二','看书',null,'清华大学');
insert into test_in(name, hobby, sex, school) values('张三','游泳',1,null);
insert into test_in(name, hobby, sex, school) values('张四','跳绳',1,'大连大学');
insert into test_in(name, hobby, sex, school) values('张五','健身',2,'青岛大学');
insert into test_in(name, hobby, sex, school) values('张六','学习',2,'吉林大学');
  • 查询结果:select * from test_in;
    在这里插入图片描述

二. SQL中in的使用

  1. 正常in的使用:select * from test_in where sex in (1);
    在这里插入图片描述
  2. 有null值的in使用:select * from test_in where sex in (1,null);

划重点:SQL中使用in时,会忽略null值的记录,即不会查询出列值为null的数据。
在这里插入图片描述

三. SQL中not in的使用

  1. 正常not in的使用:select * from test_in where sex not in (1);

划重点:SQL中使用not in时,如果 not in后面的选项中没有null,只会查询从列值不为空的列中过滤,即会过滤掉列值为null的数据。
在这里插入图片描述

  1. 有null值的not in的使用:select * from test_in where sex not in (1, null);

划重点:SQL中使用not in时,如果not in后面的选项中有null,则不会查询出来任何数据。因为sql语句本身直接返回false,所以使用not in时候,要保证not in后的条件值不会出现null,不然可能会出现意想不到的情况。
在这里插入图片描述

一. 表结构和初始化数据表结构初始化数据insert into test_in(name, hobby, sex, school) values('张一','打球',1,'北京大学');insert into test_in(name, hobby, sex, school) values('张二','看书',null,'清华大学');insert into test_in(name, hobby, sex, school) values('张三','游泳',1,null);insert
1)in的逻辑规则是or not in 的逻辑规则是 and 2)判断nullsql语句为 is not null 或者 is null 3)当遇到 null = null 的判断是时由于不符合null的判断规则,所以结果一定为flase not in 包含null值的情况 select * from A where A.name not in (select B.name from B ) 在上面的not in的查询如果B表的name字段.
select * from emp e where e.comm in (300, 500, null); 2. 使用not in的时候,如果 not in后面的选项没有null,只会查询从comm列不为空的列过滤,会过滤掉comm为null的数据 select * from emp e where e.comm not in (300, 500); 3.使用not in 的时候,如. SELECT * FROM user WHERE password in (‘44’,null) 这样是无法将zhangsan 这条数据查出来但使用ifnull就能够解决这个问题 SELECT * FROM user WHERE IFNULL(password,‘’) in (‘44’,‘’)使用ifnullNull值转换成 空串’’ 然后条件添加空串就能将null值查询出来 NULL表示不知道是什么,就是说NULL的原意是不知道是什么,表示可能什么都是。 NULL与?做比较 PRINT (Case When NULL ='Value' Then 'true' else 'false' end) PRINT (Case When NULL!='Value' Then 'true' ...
Hive的not in函数有一个隐藏的陷阱,当not in() 的数值包含NULL,匹不上的数据会返回NULL而不是True。 所以当在where使用not in子查询进行筛选,一定要记得去除NULL值。 样例代码: --not in的原始结果 select num,num not in (null,'2'), num not in (null,'2') and true from
原查询语句: SELECT `DEVICE_NO`,`SYS_NO`,`STATION_NO` ,`DEVICE_NAME`,`DEVICE_TYPE_NO` FROM `dic_device` WHERE `STATION_NO`=8 AND `DEVICE_NO` LIKE '%POWER%' AND `DEVICE_TYPE_NO` NOT IN(SELECT `DEVICE_TY
比如我们在使用这个sql:select deptnofrom dept where deptno not in (10,50,null)进行查询时,在有数据符合条件的情况下,始终是得不到数据的。究其原因如下: 1.IN和NOT IN本质上都是OR运算。 对于条件deptnoin (10,50,null),可以等价于where deptno=10 or deptno=50 or deptno...