안녕하세요.
하위 질의에서 이미지와 같이 ALL문을 사용 할 때가 있고 아닐 때가 있던데 정확히 어떨 때 사용하는 건지 궁금합니다.
안녕하세요 길벗수험서 운영팀입니다.
기본질의가 있고 하위질의가 있을때 하위질의 결과값이 1개만 나올때를 "단일행 하위질의" 라고 하고
기본질의가 있고 하위질의가 있을때 하위질의 결과값이 여러개(2개이상) 나올때를 "다중행 하위질의" 라 합니다.
만약 단일행 하위질의로 작성을 했는데 하위질의의 결과가 2개이상 반환이 되면 오류가 발생합니다.
"단일행 하위질의"의 경우 일반적으로 많이 사용되는것으로 하위질의의 결과를 기본질의의 조건을 비교할때
=, <, <=, >, >=, <> 등의 비교연산자를 이용하여 비교를 합니다.
"다중행 하위질의"의 경우 IN, ANY, ALL 등의 연산자를 사용합니다.
all : 서브쿼리의 결과에 존재하는 모든 값을 만족하는 조건을 의미하는데
< all 의 경우 비교 대상중 최소값보다 작은값을 찾아주고
> all 의 경우 비교 대상중 최대값보다 큰값을 찾아줍니다.
회원님께서 말씀하신 문제에서 조건문은 아래와 같습니다.
WHERE 기본급 < ALL (SELECT 기본급 FROM 사원 WHERE 주소 = “망원동”);
이 코드에서 하위질의를 실행하면 <사원> 테이블에서 ‘주소’가 “망원동”인 사원들의 ‘기본급’을 추출하는데
이때 결과값으로 120, 90 이렇게 2개의 값이 나옵니다.
이때 where문을 보면 기본급 < ALL 이렇게 되어있으니
기본급의 모든(ALL) 범위인 120, 90보다 작은(<) 값을 찾아줘야 합니다.
이때 하위질의 결과값 중 최소값이 90 이기 때문에 90보다 작은 기본급을 갖는 자료들을 찾아주는것입니다.
열심히 연습하셔서 합격하시길 기원하겠습니다.
행복한 하루되세요 :)
-
관리자2024-04-20 18:36:43
안녕하세요 길벗수험서 운영팀입니다.
기본질의가 있고 하위질의가 있을때 하위질의 결과값이 1개만 나올때를 "단일행 하위질의" 라고 하고
기본질의가 있고 하위질의가 있을때 하위질의 결과값이 여러개(2개이상) 나올때를 "다중행 하위질의" 라 합니다.
만약 단일행 하위질의로 작성을 했는데 하위질의의 결과가 2개이상 반환이 되면 오류가 발생합니다.
"단일행 하위질의"의 경우 일반적으로 많이 사용되는것으로 하위질의의 결과를 기본질의의 조건을 비교할때
=, <, <=, >, >=, <> 등의 비교연산자를 이용하여 비교를 합니다.
"다중행 하위질의"의 경우 IN, ANY, ALL 등의 연산자를 사용합니다.
all : 서브쿼리의 결과에 존재하는 모든 값을 만족하는 조건을 의미하는데
< all 의 경우 비교 대상중 최소값보다 작은값을 찾아주고
> all 의 경우 비교 대상중 최대값보다 큰값을 찾아줍니다.
회원님께서 말씀하신 문제에서 조건문은 아래와 같습니다.
WHERE 기본급 < ALL (SELECT 기본급 FROM 사원 WHERE 주소 = “망원동”);
이 코드에서 하위질의를 실행하면 <사원> 테이블에서 ‘주소’가 “망원동”인 사원들의 ‘기본급’을 추출하는데
이때 결과값으로 120, 90 이렇게 2개의 값이 나옵니다.
이때 where문을 보면 기본급 < ALL 이렇게 되어있으니
기본급의 모든(ALL) 범위인 120, 90보다 작은(<) 값을 찾아줘야 합니다.
이때 하위질의 결과값 중 최소값이 90 이기 때문에 90보다 작은 기본급을 갖는 자료들을 찾아주는것입니다.
열심히 연습하셔서 합격하시길 기원하겠습니다.
행복한 하루되세요 :)