취미가 좋다
헤비 유저가 소유한 장소 본문
https://programmers.co.kr/learn/courses/30/lessons/77487
SELECT *
FROM PLACES
WHERE HOST_ID IN (
SELECT HOST_ID
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(ID)>1)
ORDER BY ID
WHERE ... IN ... 을 사용한다.
GROUP BY ... HAVING 절을 사용하여 HOST_ID가 여러 개인 HOST_ID 를 찾아낸다.
그것을 서브쿼리로 하여 찾아낸 HOST_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(HOST_ID) > 1
)
ORDER BY ID
EXISTS 는 서브 쿼리의 결과가 존재하면 TRUE, 아니면 FALSE를 반환한다.
SELECT 1 은 크게 의미는 없고, TRUE를 대체한다고 볼 수 있다. 테이블 크기만큼 1을 보여준다.
위의 IN 보다 효율적이다.
'SQL 문제풀이 > 프로그래머스' 카테고리의 다른 글
우유와 요거트가 담긴 장바구니 (0) | 2021.08.12 |
---|---|
입양 시각 구하기(2) (0) | 2021.08.12 |
입양 시각 구하기(1) (0) | 2021.08.12 |
동명 동물 수 찾기 (0) | 2021.08.12 |
고양이와 개는 몇 마리 있을까 (0) | 2021.08.12 |
Comments