Database

MySQL 에서 Order by 절에서 Group Function 사용시 에러 발생

페이지 정보

본문

어제 온라인에서 Order By 절에서 Count(idx) 와 같은 Group 함수를 사용하게 될 경우
오류 메세지를 발생하게 됩니다. 이것 때문에 참 난감해 하시더군요.

예를 들자면 다음과 같은 쿼리 입니다.
예> SELECT count(cid) FROM tbl GROUP BY cid ORDER BY COUNT(cid)
    -> tbl 이란 테이블에서  cid 로 group by 하여 해당 결과를 count() 한 결과로 정렬한다.

이 쿼리문은 언 뜻 보기엔 문제가 없습니다.
맞습니다 문제 없습니다.. Oracle 에서는 ( --) 문제 없이 작동을 했었지요.

문제는 MySQL 에선 에러가 발생한다는 것이지요.
이러한 문제에 봉착하게 되자 "파일로 뽑아서 삽질해야지" 라고 말씀을 하시더군요..

그.러.나. MySQL 을 너무 -_- 우습게 봤던 것일까요?
해결책은 아주 간단한 것이였었습니다.
필드명을 간단히 Alias(별칭) 을 통해서 해결이 되더군요 -_-;;

역시 백문이 불여 일타!
기존의 Query> SELECT count(cid) FROM tbl GROUP BY cid ORDER BY COUNT(cid)
수정된 Query> SELECT count(cid) as cid_cnt FROM tbl GROUP BY cid ORDER BY cid_cnt

이런 식으로 Alias 를 해주게 되면 문제 없이 작동하게 됩니다.

------------------------------------------------------------
select count(cid) as cid_cnt, no from tbl group by cid order by cid_cnt 경우 문제가 생길 수도 있습니다

select count(cid) as cid_cnt, max(no) from tbl group by cid order by cid_cnt 와 같이 다른 그룹 함수를 이용해서 결과를 출력 하시거 나 혹은

select count(cid) as cid_cnt, no from tbl group by cid,no order by cid_cnt 와 같이 group by 하실때 no 필드에 대해서도 명시를 해주시면 될 것입니다.

관련자료

등록된 댓글이 없습니다.
Today's proverb
나는 보석보다도 인격의 아름다움으로 장식되고 싶다. 보석은 재물에서 주어진 반면, 인격은 정신에서 온다. (B. 테일러)