반응형
SELECT *
FROM PLACES
WHERE HOST_ID IN (
SELECT HOST_ID FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(ID) >= 2
)
ORDER BY ID;
SELECT *
FROM PLACES P1
WHERE EXISTS (
SELECT 1 FROM PLACES P2
WHERE P1.HOST_ID = P2.HOST_ID
GROUP BY HOST_ID
HAVING COUNT(ID) >= 2
)
ORDER BY ID;
두 방식 모두 서브쿼리와 HAVING COUNT()를 사용했다는 점에서 동일하지만 IN절을 사용했느냐, EXISTS절을 사용했느냐에 따라 다르다.
EXISTS절은 해당하는 값이 존재하는지만 체크하기 때문에 존재하는 값을 전부 확인하는 IN절보다 성능이 좋을 것으로 판단된다. SELECT 1이라고 한 것은 단순히 있냐 없냐만 필요한 것으로 컬럼을 써줄 필요가 없기 때문이다.
728x90
반응형
'문돌이 존버 > DB 및 SQL 스터디' 카테고리의 다른 글
(프로그래머스 SQL 문제 풀이) 우유와 요거트가 담긴 장바구니 (0) | 2021.10.02 |
---|---|
AWS Ubuntu 20.04 LTS에 MongoDB 설치하기 (0) | 2021.07.09 |
MongoDB에 csv import 하기 및 간단한 쿼리(query) 날리기 (0) | 2021.07.09 |
(프로그래머스 SQL 문제 풀이) 루시와 엘라 찾기, 이름에 el이 들어가는 동물 찾기, 중성화 여부 파악하기, 오랜 기간 보호한 동물(2), DATETIME에서 DATE로 형 변환 (0) | 2021.05.18 |
(프로그래머스 SQL 문제 풀이) 있었는데요 없었습니다 (0) | 2021.05.18 |