데이터베이스

[SQL] WHERE 과 HAVING 의 차이

담쏙 2021. 11. 27. 20:55
728x90

WHERE

SELECT * FROM 테이블 WHERE 조건절;

WHERE 은 기본적인 조건절로 항상 FROM 뒤에 위치하며 다양한 비교 연산자로 구체적인 조건을 줄 수 있다.

 

HAVING

SELECT * FROM 테이블 GROUP BY 필드 HAVING 조건절;

항상 GROUP BY 뒤에 위치하며 WHERE 과 마찬가지로 다양한 비교 연산자로 조건을 줄 수 있다.

 

 

둘다 필드에 조건을 줄 수 있다는 것은 동일하나, WHERE은 기본적으로 모든 필드에 조건을 둘 수 있지만 HAVING은 GROUP BY로 그룹화 된 필드에 조건을 줄 수 있다. 또한, HAVING에서 조건을 줄 필드는 SELECT에 반드시 명시되어 있어야 한다.

 

만약 두 조건절을 함께 사용한다면 아래와 같은 형태가 된다.

SELECT * FROM 테이블명 WHERE 조건절 GROUP BY 컬럼 HAVING 조건절;