SQL_기초 공부

[sql] Group By 에 대해

메타듀 2023. 2. 15. 10:52
728x90
반응형

board(게시판) 와 reply(댓글)의 Group By를 해보자!

 

oracle 에서..

select bno, title , writer, board.reg_date 
from board left join reply on board.bno = reply.board_bno
order by bno desc;

 

각 게시글의 댓글의 수 만큼 row가 생성된다.
이 row 들을 group by 해보자!

 

select bno, title , writer, board.reg_date, rno from board left join t_reply tr on t_board.bno = tr.board_bno
group by t_board.bno
order by bno desc;

 

 


에러가 난다....


왜?

 


다른 컬럼들이 그룹을 맺을 때 대표하는 값을 지정해주지 않았기 때문에..
숫자를 세거나, 가장 큰 수나 작은 수 등의 값을 지정해주면 에러가 나지 않는다.

 

select bno, count(title) as "댓글 수" , min(writer), min(board.reg_date)  
from board left join reply on board.bno = reply.board_bno
group by board.bno
order by bno desc;

 

 

mariaDB 에서..

select bno, title , writer, board.reg_date, rno 
from board left join reply on board.bno = reply.board_bno
group by board.bno
order by bno desc;


oracle 에서는 에러나는 이 구문이 MariaDB에서는 잘 나온다!
이유가 뭘까?

 

only full group by 특성 때문이다.
select 된느 과정에서 가장 위에 나오는 컬럼이 대표 컬럼이 되어 조회된다.

반응형

'SQL_기초 공부' 카테고리의 다른 글

SQL에서 중복 쿼리를 제거 하는 방법  (0) 2023.03.08
[sql] 데이터 모델링의 이해  (0) 2023.02.21
[sql] sql문 종류/작성  (0) 2023.02.21
[Oracle] 표준 DB 연결  (0) 2023.02.20