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 |