mysql_数据查询_嵌套查询

Posted Jason333

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql_数据查询_嵌套查询相关的知识,希望对你有一定的参考价值。

嵌套查询

一个SELECT-FROM-WHERE语句称为一个查询块。

嵌套查询:将一个查询块嵌套在另一个查询块的WHERE子句或者HAVING短语的条件中的查询。

注:子查询的SELECT语句中不能使用ORDER BY子句,ORDER BY子句只能对最终查询结果排序。

 

1.带有IN谓词的子查询:

子查询往往是一个集合。

查询与jason在同一个系的学生:

SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN
(SELECT Sdept FROM Student WHERE Sname=‘jason‘);

子查询的查询条件不依赖于父查询,成称为不相关子查询

子查询的查询条件依赖于父查询,成称为相关子查询

 

查询选修了DB_Design的学生学好和姓名。

SELECT Sno,Sname FROM Student WHERE Sno IN
(SELECT Sno FROM SC WHERE Cno IN
(SELECT Cno FROM Course WHERE Cname=‘DB_Design‘)
);

 

2.带有比较运算符的子查询:

当用户确切知道内层查询返回的是单个值时,可以用>、<、=、>=、<=、!=(<>)等比较运算符。

 

SELECT Sno,Sname,Sdept FROM Student WHERE Sdept=
(SELECT Sdept FROM Student WHERE Sname=‘jason‘);

 

SELECT Sno,Cno FROM SC x WHERE Grade>=
(SELECT AVG(Grade) FROM SC y WHERE y.Sno=x.Sno);  (相关子查询)

 

3.带有ANY(SOME)或ALL谓词的子查询:

子查询返回单值时可以用比较运算符,但返回多值时要用ANY(有的系统用SOME)或ALL谓词修饰符。使用ANY或ALL也必须同时使用比较运算符。

>ANY   :  大于子查询结果中的某个值

>ALL    :  大于子查询结果中的所有值

=ANY   :   等于子查询结果中的某个值

 

查询非计算机系中比计算机系任意一个学生年龄小的学生姓名和年龄。

SELECT Sname,Sage FROM Student

WHERE Sage<ANY(SELECT Sage FROM Student WHERE Sdept=‘CS‘) AND Sdept!=‘CS‘;

 

 

 







以上是关于mysql_数据查询_嵌套查询的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis框架学习_7_嵌套属性查询(级联查询)

mysql_子查询

Mysql的学习4____数据的查询

具有多个 _TABLE_SUFFIX 条件的嵌套查询的意外结果

如何将嵌套的 json 导入谷歌大查询

查询结果作为嵌套查询中的列名