查看文章
   
相关子查询中exists后select 加数字的理解
2010-07-23 17:16

前提:两个基础表

SQL> select * from courses;

COURSE_ID COURSE_NAME                    CREDIT_HOUR

---------- ------------------------------ -----------

10101 计算机组成原理                           4

10201 自动化控制原理                           4

10301 工程制图                                      3

10102 c++程序设计                                3

10202 模拟电子技术                               4

10302 理论力学                                     3

10103 离散数学                                      3

10203 数字电子技术                              4

10303 材料力学                                      3

已选择9行。

SQL> select * from students_grade;

STUDENT_ID COURSE_ID      SCORE

---------- ---------- ----------

10101      10101         87

10101      10301         79

10101      10201        100

10101      10201        100

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

下面执行相关子查询:

SQL> select course_id ,course_name from courses c

where exists

(select 2 from students_grade sg

where sg.course_id =c.course_id);

分析执行步骤:

1) 先执行外部查询

SQL> select course_id ,course_name from courses c;

COURSE_ID COURSE_NAME

---------- ------------------------------

10101 计算机组成原理

10201 自动化控制原理

10301 工程制图

10102 c++程序设计

10202 模拟电子技术

10302 理论力学

10103 离散数学

10203 数字电子技术

10303 材料力学

2) 外部查询的每一条数据对比一次子查询

第一次比较

10101 计算机组成原理 只要exists 后对比的结果返回true 则列出:

10101 计算机组成原理

同理外部查询的COURSE_ID COURSE_NAME   还剩下8项一一和内部查询的

STUDENT_ID COURSE_ID      SCORE比较最后得出结果

COURSE_ID COURSE_NAME

---------- ------------------------------

10101 计算机组成原理

10201 自动化控制原理

10301 工程制图

很多人会被查询语句中的

(select 2 from students_grade sg

where sg.course_id =c.course_id);的2迷惑,不管你这里用*号 还是

students_grade中的(STUDENT_ID 、COURSE_ID 、SCORE)项,最后都不会影响整个相关查询的结果,这是因为,外部查询的项和内部查询项对比时只会看是否为ture,如果为ture则列出结果,所以这里根本不会理会select 2 from students_grade sg

where sg.course_id =c.course_id中select的结果,那你一定会问为什么用select 2 不用select * 呢

我上网查了下 听说 如果用select * 要查数据字典所以会慢点 呵呵 还不知道是不是真的!

相关子查询中exists后select 加数字的理解相关推荐

  1. exist后select加数字的理解

      查看文章     相关子查询中exists后select 加数字的理解 2010-07-23 17:16 前提:两个基础表 SQL> select * from courses; COURS ...

  2. [每日一题] OCP1z0-047 :2013-08-08   相关子查询中EXISTS的使用.....................................28...

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/9865711 正确答案是:AC EXISTS谓词非常简单,它是对一个非空集的测试.如果在其子 ...

  3. 3. 多层select的使用:子查询的定义、无关子查询、相关子查询

    文章目录 子查询的定义 无关子查询 1. 查询与"张三"在同一个系学习的学生的学号.姓名和专业. 2. 查询 1号课的考试成绩 比"张三"高的学生的学号和姓名. ...

  4. 嵌套查询:相关子查询和非相关子查询

    嵌套查询 一个select-From-Where查询语句块可以嵌套在另一个select-From-Where查询块的Where子句中,称为嵌套查询. 外层查询称为父查询,主查询.内层查询称为子查询,从 ...

  5. 翻译:通向T-SQL的阶梯:超越基础水平3:建立相关子查询

    原文链接:http://www.sqlservercentral.com/articles/Stairway+Series/105972/   原文作者:Gregory Larsen 该系列 本文是楼 ...

  6. SQL——相关子查询和不相关子查询

    SQL--相关子查询和不相关子查询 不相关子查询 相关子查询 在SQL中经常使用在"FROM/WHERE"字句中包含一个形如"SELECT-FROM-WHERE" ...

  7. T-SQL的进阶:超越基本级别3:构建相关子查询——701小组

    T-SQL的进阶:超越基本级别3:构建相关子查询 格雷戈里·拉森,2014/03/05 原文链接: http://www.sqlservercentral.com/articles/Stairway+ ...

  8. SQL相关子查询是什么?和嵌套子查询有什么区别?

    文章目录 两者的各种叫法 相关子查询MySQL解释 相关子查询Wikipedia解释 相关子查询执行步骤拆解 相关子查询和嵌套查询的区别 参考资料 两者的各种叫法 相关子查询叫做:Correlated ...

  9. SQL语句中‘相关子查询’与‘非相关子查询’有什么区别?

    (1)非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询. (2)相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次. 因此非相关子查询比相关 ...

最新文章

  1. [zz]用U盘装win7/XP系统的操作[图解]
  2. pyqt5从子目录加载qrc文件_实战PyQt5: 045-添加资源文件
  3. 筒仓计算表格_身份反模式:联邦筒仓和意大利面条身份
  4. python数据结构与算法分析_数据结构和算法分析
  5. Android Service+Socket 联网交互
  6. 真机调试时部分日志丢失(魅族)
  7. 谷歌开源量子计算框架Cirq
  8. js高级学习笔记(b站尚硅谷)-2-数据、变量、内存三者的关系
  9. 基于github上camera开源框架CameraKit,实现仿微信拍照摄像功能
  10. 唯冠为何赢了苹果却不付律师费
  11. YIQ、YUV、YCrCb 与 RGB关系
  12. DQN-FlappyBird项目学习
  13. 迅捷PDF转换器怎样将PDF文件转换为HTML网页
  14. javaGUI游戏教程--人物控制
  15. async.whilst 的一个简化版实现
  16. 三苯基三甲基硫酸酯的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. 如何观察一棵树 - 笔记
  18. IP地址和子网划分学习笔记
  19. WD移动硬盘unlock解锁之后看不到盘符的解决办法
  20. Python2.7+PyQt5的安装

热门文章

  1. weblogic修改java重启_修改weblogic域的jdk
  2. 华为p20可以用云闪付吗_华为hcIE有多难?零基础可以通过华为hcie认证吗?
  3. xampp测试php代码,php用xampp测试
  4. ssl java 客户端_Java SSL生成客户端和服务端crt文件
  5. python定时器每月执行一次_python 定时器,实现每天凌晨3点执行的方法
  6. scanf可不可以输入浮点型_数据的输入和输出
  7. 文本数据 php,PHP对文本数据库的基本操作方法
  8. skype安卓手机版_危险的战争游戏安卓手机版下载-危险的战争下载v1.0.13
  9. Spring MVC 通过@Value注解读取.properties配置内容
  10. excel操作----主要用于数据库入库