0。3. MySQL数据库的嵌套查询 MySQL Sq语言允许有多层嵌套查询。即一个子查询中还允许嵌 套其他子查询。需要特别指出的是子查询的 select语句 中不能使用 order by子句, order by子句只能对最终 查询结果排序 子查询通常与IN、比较运算符及 EXISTS谓词结合使用 MySQL数据库应用》http:/mysq!xg.hactcm.edu.cn 第6页
《MySQL数据库应用》 http://mysql.xg.hactcm.edu.cn/ 第 6 页 3. MySQL数据库的嵌套查询 • Sql语言允许有多层嵌套查询。即一个子查询中还允许嵌 套其他子查询。需要特别指出的是子查询的select 语句 中不能使用order by 子句,order by子句只能对最终 查询结果排序。 • 子查询通常与IN 、比较运算符及EXISTS谓词结合使用
0。3. MySQL数据库的嵌套查询 MySQL 子查询时,需要注意以下几点 子查询需要使用括号()括起来; 子查询要放在比较操作符的右边; 当子查询的返回值是一个集合而不是一个值时,不能 使用单行操作符,而必须根据需要使用ANY、IN、AL 或 EXISTS等操作符 MySQL数据库应用》http:/mysq!xg.hactcm.edu.cn 第7页
《MySQL数据库应用》 http://mysql.xg.hactcm.edu.cn/ 第 7 页 • 子查询时,需要注意以下几点: – 子查询需要使用括号 ( ) 括起来; – 子查询要放在比较操作符的右边; – 当子查询的返回值是一个集合而不是一个值时,不能 使用单行操作符,而必须根据需要使用ANY、IN、ALL 或EXISTS等操作符。 3. MySQL数据库的嵌套查询
·031带有ln谓词的子查询 MySQL 在嵌套查询中,子查询的结果往往是一个集合,所以谓 词N是嵌套查询中最常用的谓词。 IN子查询用于进行一个给定值是否在子查询结果集中的 判断。 语法格式为:表达式[not]in(子查询) MySQL数据库应用》http:/mysq!xg.hactcm.edu.cn 第8页
《MySQL数据库应用》 http://mysql.xg.hactcm.edu.cn/ 第 8 页 3.1带有In谓词的子查询 • 在嵌套查询中,子查询的结果往往是一个集合,所以谓 词IN是嵌套查询中最常用的谓词。 • IN子查询用于进行一个给定值是否在子查询结果集中的 判断。 • 语法格式为:表达式 [not] in (子查询)
·031带有ln谓词的子查询 MySQL 案例:查找在ⅹscj擞据库中选修了课程号为206的课程的 学生的姓名、学号。 SELECT姓名学号 FROM XS Where学号in ( select学号 from xs kc where课程号=206″ MySQL数据库应用》http:/mysq!xg.hactcm.edu.cn 第9页
《MySQL数据库应用》 http://mysql.xg.hactcm.edu.cn/ 第 9 页 3.1带有In谓词的子查询 • 案例:查找在xscj数据库中选修了课程号为206的课程的 学生的姓名、学号。 SELECT 姓名,学号 FROM xs where 学号 in ( select 学号 from xs_kc where 课程号= ‘206’ );
MySQL ●000 案例:查询与“刘晨”在一个系学习的学生 select b FROM Student a student b WHERE a sname=刘晨 and a Sdept= b Sdept and b Sname<>刘晨 SELECT FROM Student WHERE Sdept IN (SELECT Sde pt FROM Student WHERE Sname=刘晨) and Sname<>刘晨 步骤:先找出刘晨对应的院系,再通过院系找其余学生 MySQL数据库应用》http:/mysq!xg.hactcm.edu.cn 第10页
《MySQL数据库应用》 http://mysql.xg.hactcm.edu.cn/ 第 10 页 案例:查询与“刘晨”在一个系学习的学生。 SELECT b.* FROM Student a,student b WHERE a.Sname=‘刘晨’ and a.Sdept= b.Sdept and b.Sname<>‘刘晨' SELECT * FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE sname= ‘刘晨') and Sname<>‘刘晨' 步骤:先找出刘晨对应的院系,再通过院系找其余学生