Oracle数据库SQL语句(四)—子查询(嵌套查询)
Oracle数据库SQL语句(四)
子查询(嵌套查询) 1、单行子查询
SELECT * FROM stu
WHERE ID > (SELECT ID FROM stu WHERE NAME =王五);
2、多行子查询
--IN 在什么范围内
SELECT * FROM stu
WHERE ID IN (SELECT ID FROM stu WHERE CLASS = 一班);
--ANY:表示任意的
--= ANY :和子查询中任意一个结果相等即可,相当于IN;
SELECT * FROM stu
WHERE ID = ANY ( SELECT ID FROM stu WHERE CLASS = 一班);
--< ANY :比子查询返回的任意一个结果小即可,即小于返回结果
SELECT * FROM stu
WHERE ID < ANY ( SELECT ID FROM stu WHERE CLASS = 一班);
--> ANY :比子查询返回的任意一个结果大即可,即大于返回结果
SELECT * FROM stu
WHERE ID > ANY ( SELECT ID FROM stu WHERE CLASS = 一班);
--ALL:表示所有的
--= ALL :无意义,逻辑上也不成立。
SELECT * FROM stu
WHERE ID = ALL ( SELECT ID FROM stu WHERE CLASS = 一班);
--< ALL :比子查询返回的所有的结果都小,即小于返回结果的最小值
SELECT * FROM stu
WHERE ID < ALL ( SELECT ID FROM stu WHERE CLASS = 三班);
--> ALL :比子查询返回的所有的结果都大,即大于返回结果的最大值
SELECT * FROM stu
WHERE ID > ALL ( SELECT ID FROM stu WHERE CLASS = 三班);
3、多列子查询
--多列子查询
SELECT ID,NAME,CLASS FROM stu
WHERE ID IN (
SELECT MAX(ID) FROM stu
GROUP BY CLASS);
4、相关子查询
--相关子查询中,内部查询需引用外部查询的列,进行交互判断。
--相关子查询的执行方式是一行行操作。
--外部查询每执行一行操作,内部查询都要执行一次。
SELECT ID,NAME,CLASS FROM stu
WHERE ID > (SELECT AVG(ID) FROM stu
WHERE CLASS = 三班);
