数据库含EXISTS的查询
2023-12-13 17:28:14
一、含EXISTS的简单子查询
SELECT Sname
FROM Student
WHERE EXISTS
(SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno='1');
在上述例子中,查询过程如下:
首先取外层查询中Student表的第一个元组,根据它与内层查询相关的属性值(Sno值)处理内层查询,若WHERE子句返回值为真,则取外层查询中该院组的Sname放入结果表
然后再取Student表的下一个元组
重复这一过程,直至外层Student表全部检查完为止
若有以下表:
Student表:
学号Sno | 姓名Sname | 性别Ssex | 年龄Sage | 所在系Sdept |
---|---|---|---|---|
1 | 李勇 | 男 | 20 | CS |
2 | 刘晨 | 女 | 19 | CS |
3 | 王敏 | 女 | 18 | MA |
4 | 张立 | 男 | 19 | IS |
SC表:
学号Sno | 课程号Cno | 成绩Grade |
---|---|---|
1 | 1 | 92 |
1 | 2 | 85 |
1 | 3 | 88 |
2 | 2 | 90 |
2 | 3 | 80 |
则具体过程如下:
首先取第一个数据
学号Sno | 姓名Sname | 性别Ssex | 年龄Sage | 所在系Sdept |
---|---|---|---|---|
1 | 李勇 | 男 | 20 | CS |
在表SC中找符合Sno=1且Cno=1的数据,有符合条件的元组,则子查询返回1,该元组加入结果中
对后续元组类似处理
二、含双重NOT EXISTS的查询语句
文章来源:https://blog.csdn.net/qq_39991776/article/details/134843864
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!