这是命令行操作MySQL数据库系列博客的第十三篇,今天这篇博客记录in如何进行查询。(IN 与 NOT IN)
目录
简介
IN查询就是查询集合内的所有数据,NOT IN就是查询非集合内的数据。
集合:括号内自己填写的数据。
IN查询
有的时候,当我们需要查询的目标记录限定在某个集合中的时候,在MySQL中可以使用关键字IN来实现,关键字IN可以实现判断字段的数值是否在指定集合中,该关键字的具体语句形式如下:
select * from 表名 where 字段名 IN(数据1, ..., 数据n);
意思是:查询表中所有与IN集合内相同的数据(即将满足查询条件的记录查询出来,否则不会被查询出来)。
例:
1. 首先创建一张表,并插入数据
2. 使用IN查询
(1).查询表name字段中符合name等于‘小蓝’的所有数据。
select * from in_table where name IN('小蓝');
(2).查询表name字段中符合name等于‘小明’与name等于‘小红’的所有数据。
select * from in_table where name IN('小明', '小红');
NOT IN查询
使用NOT IN可以反向查询非集合中的数据
具体语句形式如下:
select * from 表名 where 字段名 NOT IN(数据1, ..., 数据n);
例:
1. 使用NOT IN查询
(1). 查询除小蓝之外的所有数据
select * from in_table where name NOT IN('小蓝');
(2). 查询除小明和小红的所有数据
select * from in_table where name NOT IN('小明', '小红');
注意慎用IN 与 NOT IN查询NULL
集合查询的注意: 集合中慎用 NULL
在具体使用关键字IN时,查询的集合中如果存在NULL,则不会影响查询,NULL 存不存在的效果都一样;但如果使用关键字NOT IN,查询的集合中如果存在NULL,则不会查询到任何的结果。
简析:集合查询IN如果存在有NULL,则NULL数据不会查询出来,NOT IN查询如果存在有NULL,则查询不到任何结果。
例:
1. 往表中插入一条NULL数据
2. 使用IN查询NULL
select * from in_table where name IN('小红', NULL);
NULL数据不会被查询出来。
3. 使用NOT IN查询NULL
select * from in_table where name NOT IN('小红', NULL);
不会查询到任何数据。
总结:
IN查询其实很简单的,IN是查询集合中的数据,而NOT IN是查询非集合中的数据;注意不要使用IN与NOT IN进行NULL的查询即可。