inflearn logo
강의

講義

知識共有

ユン・ジェソンのOracle SQL Database 11g PL/SQL Developer

第23講:結果が1つ以上のサブクエリ

join 에 in을 사용할때.

267

y42032944

投稿した質問数 2

0

직무가 clerk인 사원과 동일한 부서에 근무하고 있는 사원들의 사원번호, 이름 , 입사일을 가져온다.clerk인 사원이 몇번의 부서에서 일 하는지 모른다.```sqlselect empno, ename, hiredate from emp where deptno in (select deptno from emp where job = "clerk")```부서번호를 가져와야 한다.```sqlselect deptno from emp where job = "clerk"에서 결과가 하나이 상인 서브쿼리에 in을 사용하면 서브쿼리의 결과 중 하나라도 일치하면 조건이 참이 된다라고 했는데 부서 번호를 가져와서 여러개의 결과가 있는데 그중 하나라도 있으니까 in을 쓴다는 말인가요? 일반 서브쿼리를 사용 했을때랑 서브쿼리에 in을 사용했을때 그 에러가 정확히 무슨뜻인지 이해가 안갑니다. 일반서브쿼리를 쓰면 값이 1개가 나오고 in은 결과 값이 여러개가 나오는 경우에 in을 쓴다는 건가요?

sql oracle PL/SQL dbms/rdbms

回答 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

y42032944님, 질문하신 내용에 대한 답변을 드리겠습니다.

SQL에서 IN 구문을 사용하는 경우 일반적으로 해당 서브쿼리가 여러 개의 결과를 반환할 수 있으며, 이 중 하나라도 부모 쿼리의 조건과 일치하면 그 결과가 포함되도록 합니다. 즉, IN은 서브쿼리의 결과가 여러 개일 때 각각을 개별 조건처럼 처리하여, 주어진 조건을 만족하는 모든 행을 선택할 수 있습니다.

예를 들어, deptno 칼럼 값을 기준으로 ‘clerk’ 직무를 가진 직원이 속한 부서 번호를 서브쿼리로 찾아낸 후, 이 부서 번호에 해당하는 모든 직원의 정보를 조회하는 경우입니다. 만약 ‘clerk’의 deptno가 여러 개라면, 이 여러 부서 번호 중 하나라도 해당하는 empno, ename, hiredate 를 가진 사원들의 정보를 모두 가져오게 됩니다.

IN을 사용하는 이유는 서브쿼리가 단일 값을 반환할 것이라는 보장 없이 여러 값을 반환할 수 있기 때문이며, 여러 값 중 하나라도 일치하면 해당하는 사원의 정보를 가져올 수 있게 됩니다. 반면, 일반 서브쿼리(단일 값을 반환하는 경우)를 사용할 때는 단일 결과만을 기대하는 상황에서 적합합니다.

주어진 SQL 쿼리에서는 ‘clerk’ 직무의 직원이 다수의 deptno를 가질 수 있고, 그 각각의 deptno에 해당하는 모든 사원 정보를 조회하고자 하기 때문에 IN을 사용하는 것이 적절합니다.

서브쿼리에 IN을 사용했을 때 에러가 발생한다면, 그 이유는 서브쿼리의 구문, 데이터 타입 불일치, 혹은 기타 SQL 실행 과정에서 발생하는 문제일 수 있습니다. 구체적인 에러 메시지 없이는 정확한 원인 파악이 어렵지만, 일반적으로 IN 구문의 사용법 자체가 문제가 되는 경우는 드물습니다.

이해에 도움이 되었기를 바랍니다. 추가 질문이 있으시다면 언제든 문의해 주세요.

XE 21C 버전 다운받아 사용중인데, 저 테이블들이 없습니다..

0

199

2

급여 최저치 문제

0

217

1

강의 9:15 초 커미션을 받는 사원 이요

0

300

1

16강 마지막 문제 질문

0

395

2

37강 사용자 계정 만들고 추가할 때 오류 발생

0

241

1

PTT 파일

0

409

1

기본 학습 테이블

1

392

1

제약조건 에러 ORA-02270

0

588

1

25강 마지막 문제

0

584

3

오라클 설치 마지막에 비밀번호 설정 시 무한로딩

0

558

1

기본제공되는 테이블 질문

0

564

2

25강 마지막 문제 DALLAS에 근무 하는 조건은 안넣으셨네요

0

354

1

Oracle 설치 관련 여쭤봅니다.

0

354

1

설치 중 Error 발생

0

574

1

왜 제 질문만 무시하시는지 이유가 궁금하네요

0

418

1

블로그

0

330

1

설치가 안됩니다

0

377

0

join 학습 문의

0

272

1

안녕하세요 설치관련 질문입니다.

0

272

1

안녕하세요 서브쿼리 수업중 질문있습니다.

0

200

1

안녕하세요 수업 너무 유익하게 듣고있는 학생입니다.

0

234

1

안녕하세요 2강 오라클 설치질문있습니다

0

352

1

ora-28000 the account is locked 에러 질문 드립니다.

0

624

1

프로시저

1

435

1