select 문의 하위 쿼리가 오라클에서 작동하는 방식
나는 선택된 진술의 하위 질의가 어떻게 작동하는지 설명을 위해 여기저기 찾아봤지만, 여전히 매우 모호한 설명 때문에 개념을 이해할 수 없습니다.
오라클의 select 문에서 서브쿼리를 어떻게 사용하고 정확히 무엇을 출력하는지 알고 싶습니다.
예를 들어, 직원의 이름과 해당 직원이 이러한 테이블에서 관리하는 프로필 수를 표시하려는 쿼리가 있는 경우
직원(EmpName, EmpId)
프로파일(ProfileId, ..., EmpId)
하위 쿼리를 어떻게 사용합니까?
각 직원이 관리하는 프로필 수를 세는 기능별로 그룹을 구현하기 위해 select 문에 하위 쿼리가 필요하다고 생각했는데 잘 모르겠습니다.
이건 단순한...
SELECT empname,
empid,
(SELECT COUNT (profileid)
FROM profile
WHERE profile.empid = employee.empid)
AS number_of_profiles
FROM employee;
다음과 같은 테이블 조인을 사용하면 더욱 간단합니다.
SELECT e.empname, e.empid, COUNT (p.profileid) AS number_of_profiles
FROM employee e LEFT JOIN profile p ON e.empid = p.empid
GROUP BY e.empname, e.empid;
하위 쿼리에 대한 설명:
기본적으로, 하위 질의는select
스칼라 값을 가져와 기본 쿼리에 전달합니다.의 하위 쿼리select
둘 이상의 행과 둘 이상의 열을 전달할 수 없습니다. 이는 제한 사항입니다.여기, 우리는 a를 지나가고 있습니다.count
우리가 알다시피, 항상 숫자-스칼라 값일 뿐인 주 쿼리에.값을 찾을 수 없으면 하위 쿼리가 반환됩니다.null
본 질의까지.또한 하위 쿼리는 다음에서 열에 액세스할 수 있습니다.from
내 쿼리에 표시된 것처럼, 주요 쿼리의 절은 어디에서.employee.empid
외부 쿼리에서 내부 쿼리로 전달됩니다.
편집:
에서 하위 쿼리를 사용하는 경우select
Oracle은 기본적으로 이를 왼쪽 조인으로 처리합니다(쿼리에 대한 설명 계획에서 확인할 수 있음). 행의 카디널리티는 왼쪽의 모든 행에 대해 오른쪽에 하나만 있습니다.
왼쪽 조인에 대한 설명
왼쪽 조인은 매우 유용합니다, 특히 당신이 그것을 교체하고 싶을 때.select
제한으로 인한 하위 쿼리입니다.여기에는 테이블의 양쪽 행 수에 대한 제한이 없습니다.LEFT JOIN
키워드
자세한 내용은 하위 쿼리와 왼쪽 조인 또는 왼쪽 외부 조인에 대한 Oracle Docs를 참조하십시오.
Oracle RDBMS에서는 (하위) 출력이 컬렉션으로 캡슐화되는 한 select 절에서 다중 행 하위 쿼리를 사용할 수 있습니다.특히 다중 행 선택 절 하위 쿼리는 각 행을 xml 포리스트에 캡슐화된 xml 요소로 출력할 수 있습니다.
언급URL : https://stackoverflow.com/questions/20557899/how-does-subquery-in-select-statement-work-in-oracle
'programing' 카테고리의 다른 글
https로 보호되는 웹 사이트를 만드는 방법 (0) | 2023.07.05 |
---|---|
대응/유형 스크립트/VScode - 가져오기 경로는 '.tsx' 확장자로 끝날 수 없습니다. (0) | 2023.07.05 |
소스 트리에서 두 개의 분기에서 시각적 차이를 얻을 수 있는 방법이 있습니까? (0) | 2023.07.05 |
MongoDB는 문서를 어디에 저장합니까? (0) | 2023.07.05 |
미디어 저장소에서 URI에서 파일 이름 및 경로 가져오기 (0) | 2023.07.05 |