第子查询学习.pptxVIP

  • 0
  • 0
  • 约3.66千字
  • 约 22页
  • 2022-09-07 发布于上海
  • 举报
子查询语法 子查询 (内查询) 在主查询之前一次执行完成。 子查询的结果被主查询使用 (外查询)。 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); 第1页/共22页 注意事项 子查询要包含在括号内。 将子查询放在比较条件的右侧。 通常情况下不要在子查询中使用ORDER BY 子句。 单行操作符对应单行子查询,多行操作符对应多行子查询。 第2页/共22页 子查询类型 单行值 多行子查询 多行值 单行子查询 第3页/共22页 单行子查询 只返回一行。 使用单行比较操作符。 操作符 = = = 含义 Equal to Greater than Greater than or equal to Less than Less than or equal to Not equal to 第4页/共22页 SELECT * FROM TBL_SCOREINFO WHERE SCORE = ( SELECT MIN(SCORE) FROM TBL_SCOREINFO ) 在子查询中使用组函数 47 第5页/共22页 子查询中的 HAVING 子句 首先执行子查询。 向主查询中的HAVING 子句返回结果。 SELECT CLASSNO,MIN(SCORE) FROM TBL_SCOREINFO GROUP BY CLASSNO HAVING MIN(SCORE) ( SELECT MIN(SCORE) FROM TBL_SCOREINFO WHERE CLASSNO =001 ) 47 第6页/共22页 SELECT * FROM TBL_SCOREINFO WHERE SCORE = ( SELECT MIN(SCORE) FROM TBL_SCOREINFO GROUP BY CLASSNO ) 非法使用子查询 多行子查询使用单行比较符 第7页/共22页 子查询中的空值问题 no rows selected SELECT * FROM TBL_SCOREINFO WHERE SCORE = ( SELECT MIN(SCORE) FROM TBL_SCOREINFO WHERE CLASSNO = 004 ) 子查询不返回任何行 第8页/共22页 多行子查询 返回多行。 使用多行比较操作符。 操作符 IN ANY ALL 含义 等于列表中的任何一个 和子查询返回的任意一个值比较 和子查询返回的所有值比较 第9页/共22页 在多行子查询中使用 ANY 操作符 18.75,12.50,19,17,85 SELECT * FROM TBL_BOOKS WHERE COST ANY( SELECT COST FROM TBL_BOOKS WHERE PUBID = 4 ); 第10页/共22页 在多行子查询中使用 ALL 操作符 18.75,12.50,19,17,85 SELECT * FROM TBL_BOOKS WHERE COST ALL ( SELECT COST FROM TBL_BOOKS WHERE PUBID = 4 ); 第11页/共22页 子查询中的空值问题 SELECT * FROM TBL_BOOKS WHERE COST NOT IN ( SELECT COST FROM TBL_BOOKS ); no rows selected 第12页/共22页 小结 子查询就是在原有的查询语句中,嵌入新的查询,来得到我们想要的结果集。 一般根据子查询的嵌入位置分为如下: 1. 检索子查询 2. 虚拟表子查询 3. 条件子查询 第13页/共22页 检索子查询 检索子查询就是在我们的SELECT子句中加入完整的查询 。 例1:检索所有的学生姓名,课程名,考试成绩(关联查询) (参看例8.1 ) SELECT A.stuname , B.score, C.classname FROM tbl_studentinfo A, tbl_scoreinfo B, tbl_classinfo C WHERE A.stuno = B.stuno AND B.classno = C.classno 第14页/共22页 检索子查询 注意:当使用检索子查询的时候, 子查询的结果必须只有一条数据, 如果不能保证只有一条数据时,就必须用其他方式限制

文档评论(0)

1亿VIP精品文档

相关文档