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 = '三班');
版权声明:本文为qq_46081725原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。