SQL语句中EXISTS的使用详解及示例

EXISTS 运算符

        EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。

SQL EXISTS 语法

        

SELECT 查询列名
FROM 表名
WHERE EXISTS --返回bool类型(true,false)
(SELECT 查询列名 FROM 表名 WHERE 条件);

演示数据库

学生表

idname
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香香小姐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值