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 필드에 대해서도 명시를 해주시면 될 것입니다.

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
행복해지고 싶다면, 잠시 동안만이라도 가슴에 손을 얹고 생각해 보라. 그러면 진정한 즐거움은, 발치에 돋아나는 잡초나 아침 햇살에 빛나는 꽃의 이술과 같이 우리 주변에 무수히 널려 있다는 것을 알 수 있을 것이다. 《하루 5분 생각이 인생을 결정한다 》 (이범준)