Posts SQL having과 where의 차이
Post
Cancel

SQL having과 where의 차이

where

1
select * from 테이블명 where 조건절

항상 from 뒤에 존재하며 비교연산자들을 사용해 조건을 줄 수 있다.

having

1
select * from 테이블명 group by 필드명 having 조건절

항상 group by 뒤에 존재하며 마찬가지로 비교연산자들을 사용해 조건을 준다.

차이점과 공통점

둘다 조건을 주는 명령어이지만
where 같은 경우는 모든 필드에 대해 우선적으로 조건을 주고
having은 group by 된 이후 그룹화되어진 새로운 테이블에 조건을 줄 수 있다는 차이점이 있다.
한마디로 having은 group by와 엮인 명령어 다른곳에서 쓰이는 일은 없을 것 같다.

예를들어 동물 테이블이 있고 이름이 존재하고 2번 이상 나온 이름들을 그룹짓고 싶다면

1
2
3
4
select NAME, count(NAME) as count
from ANIMAL_INS
group by NAME
having NAME is not null and count(NAME) > 1;

그룹을 지은 후 having을 사용해 조건을 줘야 한다.