简介
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。
EXISTS 指定一个子查询,检测行的存在。语法:EXISTS subquery。参数 subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。结果类型为 Boolean,如果子查询包含行,则返回 TRUE。
准备2张表,并插入数据
学生表
create table student(userid int ,username varchar(20),age int ,classid int);
insert into student(userid,username,age,classid) values
(1,'zs',23,01),(2,'ls',25,02),(3,'ww',26,01),(4,'zl',56,02),(5,'hehe',34,04),(6,'xixi',14,04);
班级表
insert into classinfo(classid,classname) values(01,'语文'),(02,'数学'),(03,'英语');
create table classinfo(classid int ,classname varchar(20));
学生表中的5和6号学生并不在已有的班级表中,现在需要查询班级存在的学生的信息
select * from student s
where exists(
select * from classinfo c where s.classid = c.classid );
子查询查询的是班级信息,而外部查询的是学生信息,学生信息中的userid,username,age在
班级信息表中并不存在,那又是如何查询的?EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
EXISTS指定一个子查询,用于检测外部查询的行中的字段是否存在于子查询中
原文链接:https://blog.csdn.net/weixin_42834505/article/details/106695979