相关子查询中exists后select 加数字的理解
2010-08-20 10:12
274 查看
查看文章 |
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语句查询中in和exists的区别
- 五种I/O 模式,select、epoll方法的理解,BIO、NIO、AIO理解 相关文章
- 看了群友的帖子,加深对相关子查询的理解!!!
- MySQL--查询表达式理解--select
- Mysql - 02 mysql数据库"查询"select相关命令
- exist后select加数字的理解
- EXISTS、使用操作符的相关子查询小结
- [每日一题] OCP1z0-047 :2013-08-08 相关子查询中EXISTS的使用.....................................28
- day17 oracle ----查询(select) ---(BETWEEN ... AND... ,IN(list), LIKE , IS NULL , AND ,OR, NOT) ---(字符 , 数字 ,日期, 转换
- 理解dajngo ORM查询中select_related的作用
- [每日一题] OCP1z0-047 :2013-08-08 相关子查询中EXISTS的使用.....................................28
- SQL查询时常用,但不熟悉的相关语句-----邮标,行号,临时表,类型转换,字符串函数,sql 判断语句,检查是不是数字,变量,sql split 函数
- 数据库” 查询选修所有课的学生信息“ exists解法的理解
- 在oracle中,select语句查询字段中非纯数字值
- select查询返回值类型和返回空类型是not in和exists的区别
- sql语句查询中exists中为什么要用select 1?
- oracle 查询(select ) 相关语法
- 关于谓词查询的深入分析(select …where (not) exists (…))
- select查询的相关内容