DB/MySQL
group by, having, inner join
적외선
2010. 6. 28. 15:06
* group by..
group by절은 그룹별로 검색을 하게 해 준다. 특정 필드에 대해 중복이 되지 않도록
그루핑이 가능하다.
id 1111 school 백수초딩학교
id 1111 school 백마고등학교
id 2222 school 응가초딩학교
id 2222 school 응가대학교
이럴때 id로만 그루핑해서 몇명이 있는지 보고 싶을 때 group by id 를 사용한다.
group by 절을 사용할 때는 그룹 함수를 같이 사용해야 하는데, 대표적인 그룹함수에는
COUNT(), AVG(), MIN(), MAX(), SUM()이 있다.
* having
having 구문은 group by를 사용할때 연이어서 조건문 사용을 가능하게 해준다.
예)
SELECT id, COUNT(*) FROM member WHERE cc='Y' GROUP BY id HAVING COUNT(cc)=2;
설명:
member table에서 id가 중복되지 않게 group 으로 묶은 후에,
cc 필드의 갯수가 2인 것만 으로 조건 제약.
* inner join..
inner join에서의 조건문은 where이 아닌 on을 사용해서 쓴다.
예)
SELECT p.id, p.name, p.commnet FROM member AS p
LEFT INNER JOIN member_crazy AS r
ON p.id=r.id
LEFT INNER JOIN member_babo AS c
ON p.id=c.id