우선 서브 쿼리를 사용할 때 서브 쿼리는 여러 수준으로 중첩될 수 있으며 서브 쿼리는 괄호()로 묶어야 한다는 점에 유의하세요. 아래의 자세한 소개를 살펴보겠습니다.
기본 소개
1, 여기서: 하위 쿼리는 일반적으로 단일 행, 단일 열, 단일 행, 다중 열, 다중 행 및 단일 열을 반환합니다.
2; : 하위 쿼리는 단일 행, 단일 열을 반환하고, 통계 함수가 사용됨을 나타냅니다.
3, from: 하위 쿼리는 다중 행 및 다중 열 데이터를 반환합니다(테이블 구조). 🎜>4, 선택: 단일 행과 단일 열을 반환합니다(일반적으로 사용되지 않음).
세부 정보 예시
여기서(데이터 행 필터링):
a: 직원 쿼리 회사 평균 연봉보다 낮은 정보입니다.
위 쿼리는 where 절의 필터 조건으로 사용할 수 있는 단일 행과 단일 열을 반환합니다.select * from emp where sal<(select avg(sal) from emp);
b: 가장 먼저 고용한 직원의 정보를 쿼리합니다. 회사.
C: Scott과 동일한 직업을 갖고 있으며 동일한 급여를 받는 직원에 대한 정보를 쿼리합니다.select * from emp where hiredate= (select MIN(hiredate) from emp);in: 하위 쿼리에서 반환된 동일한 내용을 나타냅니다.
select* from emp where (job,sal) =( select job,sal from emp where ename ='scott') and ename <>'scott';not in:
select * from emp where sal in (select sal from emp where job = 'manager');하위 쿼리에는 null이 있을 수 없습니다.
select* from emp where sal not in(select sal from emp where job='manager');
모든:
이 하위 쿼리에서 반환된 최대값보다 큽니다select* from emp where sal = any(select sal from emp where job='manager'); select* from emp where sal > any(select sal from emp where job='manager');하위 쿼리에서 반환된 최대값보다 작습니다
select* from emp where sal < any(select sal from emp where job='manager');
all:
all: 하위 쿼리에서 반환된 최대값보다 큼 회사 평균 급여보다 높은 직위, 직위 수 및 평균 급여를 쿼리합니다. 각 사원의 번호, 이름, 직급, 부서명을 조회합니다. from(핵심): 각 부서의 이름, 위치, 인원 수를 쿼리합니다. 답변: 실제 업무에서 서브쿼리의 주된 목적은 다중 테이블 쿼리의 성능 문제를 해결하는 것이기 때문에 개발 시 가장 많이 사용됩니다. 다중 테이블 쿼리로 인해 성능에 영향을 미치는 데카르트 곱의 문제를 해결하는 것이 가장 큰 역할입니다. 복잡한 쿼리 = 단순 쿼리 + 제한된 쿼리 + 다중 테이블 쿼리 + 그룹 통계 쿼리 + 하위 쿼리 요약 위 내용은 Oracle 하위 쿼리에 대한 내용입니다. 이 문서의 내용은 Oracle을 배우거나 사용하는 모든 사람에게 도움이 될 수 있습니다. 질문이 있는 경우 메시지를 남겨서 소통할 수 있습니다. 오라클 기본학습과 관련된 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!
하위 쿼리가 매우 높은 확률;
다음:select job,count(empno),avg(sal) from emp group by job
having avg(sal)>(select avg(sal) from emp);
select e.empno,e.ename,e.job,
(select d.dname from dept d whered.deptno=e.deptno)from emp e;
select d.dname,d.loc,count(e.empno)
from emp e,dept d
where e.deptno(+)=d.deptno
group by d.dname,d.loc;
다중 테이블 쿼리와 하위 쿼리로 통계를 얻을 수 있는데 어떤 방법이 좋을까요? 分步1: select d.deptno,d.dname,d.locfrom dept d;
分步2:select deptno,count(empno)from emp group by deptno;
正确的查询:
select d.deptno,d.dname,d.loc,temp.count
from dept d,(select deptno,count(empno) count from emp
group by deptno) temp
where d.deptno=temp.deptno(+);