exists

A. 在子查询中使用 NULL 仍然返回结果集
这个例子在子查询中指定 NULL,并返回结果集,通过使用 EXISTS 仍取值为 TRUE。

select * from student where exists (select null) order by age asc

select * from student order by age asc
这两者返回的结果一样。


B. 比较使用 EXISTS 和 IN 的查询
这个例子比较了两个语义类似的查询。第一个查询使用 EXISTS 而第二个查询使用 IN。注意两个查询返回相同的信息。

select sname from student where exists (select * from grade where sid=grade.sid and sname='aa')
select distinct sname from student where sid in (select sid from grade where sname='aa')

C.比较使用 EXISTS 和 = ANY 的查询
本示例显示查找与出版商住在同一城市中的作者的两种查询方法:第一种方法使用 = ANY,第二种方法使用 EXISTS。注意这两种方法返回相同的信息。
SELECT au_lname, au_fnameFROM authorsWHERE exists(SELECT * FROM publishers WHERE authors.city = publishers.city)
SELECT au_lname, au_fname FROM authorsWHERE city = ANY (SELECT city FROM publishers)

select sname from student where sid=any(select sid from grade)
select sname from student where exists (select * from grade where student.sid=grade.sid)
select sname from student inner join grade on student.sid=grade.sid


D. 使用 NOT EXISTS
NOT EXISTS 的作用与 EXISTS 正相反。如果子查询没有返回行,则满足 NOT EXISTS 中的 WHERE 子句。

select * from student where not exists (select * from grade where student.sid=grade.sid)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值