oracle exits用法

exists表示()内子查询语句返回结果不为空说明where条件成立就会执行主sql语句,若是为空就表示where条件不成立,sql语句就不会执行。not exists和exists相反,子查询语句结果为空,则表示where条件成立,执行sql语句。负责不执行。sql

以前在学oracle数据库的时候,接触过exists,作过几个简单的例子,,如数据库

1.若是部门名称中含有字母A,则查询全部员工信息(使用exists) select * from emp where exists (select * from dept where dname like '%A%' and deptno = emp.deptno) temp and deptno=temp.deptno;oracle

结果为:code

EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

7369 SMITH      CLERK           7902 17-12月-80            800                    20
  7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30
  7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30
  7566 JONES      MANAGER         7839 02-4月 -81           2975                    20
  7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30
  7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30
  7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10
  7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20
  7839 KING       PRESIDENT            17-11月-81           5000                    10
  7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30
  7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20

 EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

7900 JAMES      CLERK           7698 03-12月-81            950                    30
  7902 FORD       ANALYST         7566 03-12月-81           3000                    20
  7934 MILLER     CLERK           7782 23-1月 -82           1300                    10

已选择14行。select

2.若是有平均工资不小于1500的部门信息则查询全部部门信息(使用not exists) select * from dept where not exists (select deptno from emp where deptno = emp.deptno group by deptno having avg(sal) < 1500) and exists (select * from emp where emp.deptno = deptno);sql语句

相关文章
相关标签/搜索