by DB_SQL [Oracle 기초] NOT EXSISTS [2020.11.03 18:00:05]
안녕하세요? SQL 연습할 수 있는 사이트에서 연습하다가 이해가 안되어서 질문드립니다.
문제는 모든 나라의 인구가 25000000 이하인 대륙(continent)를 만족하는 대륙들에 속한 나라의 이름, 인구를 출력하는 것입니다.
이것을 NOT EXISTS로 풀어보려고 했는데(NOT EXISTS 정확히 이해하기 위함), NOT EXISTS로 어떻게 하면 될지 도저히 모르겠어서 여쭤봅니다..
SELECT
NAME
, CONTINENT
, AREA
, POPULATION
, GDP
FROM
TABLE_NAME A
WHERE
NOT
EXISTS
(
1
TABLE_NAME
POPULATION <= 2500000
AND
= A.
);
not exists 안의 서브쿼리와 바깥 테이블과 조인(연관)을 맺어줘야 합니다.
답변해주셔서 정말 감사드립니다.
제가 그런데 아직 초짜라 상관쿼리가 어떻게 작동하는지 잘 모르겠어서 여쭤봅니다...
혹시 순서를 좀 여쭤봐도 될까요..??
바깥의 1행부터 시작하는지... 그리고 만약 맞다면, 한 개의 행에 대해서 서브쿼리 몇 개가 실행되는지 도무지 모르겠습니다ㅜㅜ....
메인 쿼리 결과 행마다 각각의 서브쿼리가 실행됩니다. 모든 나라의 인구가 25000000 이하인 대륙 인구가 25000000 초과인 나라가 존재하지 않는 대륙
*
table_name a
table_name
population > 2500000
continent = a.continent
)
;
마농님, 깔끔한 코드와 설명 감사합니다. 제가 정말 초보라 또 여쭤보는데, 예를들어 저 위에 테이블에 아프가니스탄부터 시작해서 아프가니스탄이 속한 대륙의 나라를 쫙 검사하고, 그 다음 로우(알바니아) - 유럽 대륙에 속한 나라을 쫙 검사하고, 그 다음에 또 Andorra 검사할 때는 유럽에 속한 나라를 쫙 검사하는 것인가요?