一、单子查询
说明:单子查询只返回一行记录,但父查询可以返回多行。在where条件中可以使用预算符<,>,=,<=,>=,<>
eg:
select * from emp where sal=(select min(sal) from emp)
结果
结果为 写道
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
二:多行子查询
说明:子查询可以返货多行记录,单where条件中必须使用多行运算符in,not in,exists,no exists,all,any.一般情况下,不能确认子查询返回多少条数据,用多行子查询比较安全
in:where条件中必须在子查询中的某些记录也包含和它们相同的值。
eg:
select * from emp where sal in (select sal from emp where deptno=20) order by deptno
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7902 FORD ANALYST 7566 03-12月-81 3000 20
not in:和 in 刚好相反 子查询中的记录必须不包含和他们相同的值。
eg:
select * from emp where sal not in (select sal from emp where deptno=20) order by deptno
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7839 KING PRESIDENT 17-11月-81 5000 10
7934 MILLER CLERK 7782 23-1月 -82 1300 10
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7900 JAMES CLERK 7698 03-12月-81 950 30
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 850 30
9 rows selected.
any:如果用=any的时候,作用与in相同
如果>any, 意思是 比里面子查询中最小的大
SQL> select * from emp where sal >any (select sal from emp where deptno=20) order by deptno;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7839 KING PRESIDENT 17-11月-81 5000 10
7934 MILLER CLERK 7782 23-1月 -82 1300 10
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7902 FORD ANALYST 7566 03-12月-81 3000 20
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7900 JAMES CLERK 7698 03-12月-81 950 30
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
13 rows selected.
如果<any,意思是,比里面最大的小
1* select * from emp where sal<any (select sal from emp where deptno=20) order by deptno
SQL> /
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7934 MILLER CLERK 7782 23-1月 -82 1300 10
7369 SMITH CLERK 7902 17-12月-80 800 20
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7900 JAMES CLERK 7698 03-12月-81 950 30
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
11 rows selected.
all:如果=all的时候,作用也与in相同
如果>all,意思是比里面子查询中最大的还大。
1* select * from emp where sal>all (select sal from emp where deptno=20) order by deptno
SQL> /
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- ------- ---------- -------------- - --------- ---------- ----------
7839 KING PRESIDENT 17-11月-81 5000 10
如果<all,意思是比里面子查询中最小的还小。
select * from emp where sal<all (select sal from emp where deptno=20) order by deptno;
no rows selected
分享到:
相关推荐
数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子查询数据库子...
oracle笔记子查询,有子查询相关的知识点笔记和具体的案例代码!
Mybatis框架(子查询)
3.子查询及组合 4.数据控制、数据导入/导出、数据备份和恢复 实验1 SQL SEVER 2000的系统工具、使用交互方式建库、建表实验 实验目的和要求:了解SQL SEVER 2000的功能及组成,熟练掌握利用SQL SEVER 2000企业管理...
在相关子查询中,子查询的执行依赖于外部查询,即子查询的查询条件依赖于外部查询的某个属性值。 执行过程:;在相关子查询中,子查询的执行依赖于外部查询,而嵌套子查询中,子查询的执行不依赖于外部查询。 执行...
使用In的子查询.rar使用In的子查询.rar使用In的子查询.rar
子查询相关练习,子查询最好的文档。最好的文档有。
子查询是指一条SELECT语句作为另一条SELECT语句的一部分,外层的SELCT语句称为外部查询,内层的SELECT语句称为内部查询(或子查询).doc
在SQL语言中,当一个查询语句嵌套在另一个查询的查询条件之中时,称为子查询。
数据库连接查询、子查询、嵌套查询、汇总数据
sql 子查询应用 教你如何使用sql 子查询指令,含实例说明。
复杂相关子查询 动画版
关于电影公司的数据库设计建模 包括 select语句 子查询,语句嵌套等
Oracle经典教程3——子查询和常用函数
oracle中的子查询使用场合,种类,使用方法,错误排除
oracle表连接和子查询实例 所有的实例查询都包含在里面,不会担心笔试oracle子查询。
Hibernate 函数 ,子查询 和原生SQL查询。Hibernate 函数 ,子查询 和原生SQL查询
数据库的高级查询,子查询实例数据库的高级查询,子查询实例数据库的高级查询,子查询实例
第09章_子查询讲师:尚硅谷-宋红康(江湖人称:康师傅)【题目】#1.查询和Zlotkey相同部门的员工姓名和工资#2.查询工资比公司平均工资高的员工的员工号,
oracle子查询学习教案.pptx