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 = '三班');

你可能感兴趣的:(sql,数据库,oracle,嵌套查询,子查询)