exists关键字是用来判断查询结果是否存在,当查询存在结果时则返回真,否则返回假。not exists则相反。
使用子查询进行存在性测试时,一般使用exists谓词。带着个谓词的子查询不返回查询的数据,只返回逻辑真值与假植
select Sname from student
Where exists
(Select * from SC where sno = Student.sno and Cno =’01’)
带exists的谓词的查询是先执行外层查询,然后再执行内存查询,外层查询的值决定了内层查询的结果,内层查询的执行次数由外层查询的结果数决定。
上述查询语句的处理过程为:
1) 先查找外层表student的第一行,根据Sno值来处理内层查询
2) 用外层的值来执行内层查询,如果有符合条件的数据,则exists返回真值,否则返回假值。如果exists返回真,则外层结果中的当前行数据位符合条件的结果;否则,是不符合条件的结果
3) 顺序处理外层表student表中的第2,3,。。。行数据,直到处理完所有行
select a.* from 成绩信息 a
where exists(select * from 考试安排 b where b.考试编号=a.考试编号 and b.考试编号 = ‘0801‘)
在exists中采用子查询,如果在考试安排b表中查询到考试编号有0801,且a表中考试编号也有0801,则返回真,那么就把a表中所有满足查询条件的信息显示出来
declare @username varchar(20) //声明了用户名变量
declare @psd varchar(20)//声明了密码变量
set @username = ‘2005040102‘//赋值
set @psd=‘苏普秀‘
if exists(select * from 学生信息 where 学号=@username and 姓名=@psd)
//如果学生信息表中学号为2005040102,姓名为苏普秀的条目存在的话,返回真
print ‘登陆成功‘
//打印出信息
else
print ‘登陆失败‘
转载:http://blog.sina.com.cn/s/blog_68b156d50101jsev.html