EXISTS 运算符
EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。
SQL EXISTS 语法
SELECT 查询列名
FROM 表名
WHERE EXISTS --返回bool类型(true,false)
(SELECT 查询列名 FROM 表名 WHERE 条件);
演示数据库
id | name |
---|---|
1 | 小乔大王 |
2 | 香香小姐 |
3 | 玉玉公主 |
问题1 向学生表中添加一条数据(4,香香小姐)
检查该条数据('香香小姐')是否在数据库中(不存在添加)
--问题1 向学生表中添加一条数据(4,香香小姐)
--检查该条数据('香香小姐')是否在数据库中(不存在添加)
insert into 学生表 (id,name) --传入学生表的(id,name)字段
select '4','香香小姐' where not exists ( --如果 找到
select distinct name from 学生表 where name='香香小姐')
--找到 name='香香小姐' 返回 true not 取反返回 false
执行结果:
0行受影响
解释
向学生表插入(id,name)字段 内容为 查询结果('4','香香小姐) 条件 取反 (查询结果:
如果找到 name="香香小姐" 返回 true 否则返回 false 结果找到了 返回 true )
简化
向学生表插入(id,name)字段 内容为 查询结果('4','香香小姐) 条件 false
简化
向学生表插入(id,name)字段 内容为 null
所以0行受影响
select '4','香香小姐' where not exists ( --如果 找到
select distinct name from 学生表 where name='香香小姐')
运行结果:
无列名 | 无列名 |
去除 not (取反)
select '4','香香小姐' where exists ( --如果 找到
select distinct name from 学生表 where name='香香小姐')
运行结果:
无列名 | 无列名 |
4 | 香香小姐 |