mysql은 group gy 절에 count나 sum 등 함수로 계산되는 열을 모두 안적어도 되네요? 0 2 2,647

by grape111 mysql group by [2014.10.23 22:56:00]


 

 

안녕하세요 MYsql로 작업을 하는데 아래와 같이 오라클에서 돌리면 에러가 나는데 mysql은 에러가 나지 않습니다. 여기서 ggg.b 행으로 계산되는 값은 어떤 값이 오나요 랜덤값이 오게되나요?

 mysql은 많이 짜보지 않아서 잘 모르겠네요.. 아시는분 답변부탁드릴께요

 

 

 

select ggg.a, ggg.b, count(ggg.c)


from
(select 12 a, 2 b,3 c from dual union all select 1 a, 2 b,3 c from dual
union all select 1 a, 2 b,3 c from dual union all select 1 a, 2 b,3 c from dual
union all select 1 a, 9 b,3 c from dual union all select 1 a, 2 b,3 c from dual
union all select 12 a, 9 b,3 c from dual union all select 1 a, 2 b,3 c from dual
union all select 1 a, 10 b,3 c from dual
) ggg group by ggg.a

by 은경이 [2014.10.23 23:56:03]

MySQL은 버젼에 따라 쿼리 syntax 검출 처리가 조금씩 달라요.

분명 문법에는 맞는 구조가 아니구요.

MySQL에서 문법 체크를 제대로 해주지 못해서 그런거에요.

저런 경우 현재 버젼에서는 그냥 MySQL이 문제가 되는 부분을 알아서 처리해서  ggg.a, ggg.b에 대한 group by 처리를 할꺼에요.....

근데, 버전 업글이라도 할라 치면 바로 문제가 될것이기 때문에 가능하다면, 문법에 맞게 쓰세요.

문법 체크는 mysql reference를 보시면 정확하게 알 수 있겠지만,

connect by 와 같은 것이 아닌 경우 대부분 sql 문법은 오라클과 크게 다르지 않습니다.

특히, group by 처리 같은 것은요.


by 비주류 [2014.10.24 09:10:20]

SQL MODE: only_full group_by 설정되어 있지 않으면 select, order by 등에 group by 컬럼이 아니더라도 처리가 되지만 그룹 중 임의의 값이 나옵니다. 댓글 말씀처럼 버전에 따라 안될 수도 있습니다. 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입