개발자

group by를 사용한 후 가장 최신데이터를 가져오고 싶어요.

2022년 11월 25일조회 321

group by를 이용해서 간단한 쿼리를 만들고 있는데요. group by를 사용하면 같이 합쳐지는 데이터들은 전부 사라지나요??ㅜㅜ 사라지면 남는 데이터는 무엇인가요? count(*)을 이용해서 개수를 새고 가장 최신순으로 들어온 데이터를 먼저 가져오고 싶어서 order by createdAt desc를 사용해도 이미 있던 데이터는 최신순 정렬이 안되더라고요. 제 추측으로는 id 값을 보면 group by를 하면 다른 컬럼의 데이터는 id 값이 가장 낮은걸 가져오는 것 같아요.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

엄홍재님의 프로필 사진

질문자님의 추측이 맞습니다 select * from table group by column 하면 해당 컬럼에서 같은것들은 중복이 제거되고 가장 id값이 낮은 것이 나옵니다. 이후에 order by를 해도 최신 데이터를 사용할 수가 없는 것입니다. 단순히 가장 최신데이터로 정렬하고 싶으신거면 select * from table group by column order by max(createdAt) desc 이렇게 사용하시면 됩니다. 그러면 각각 그룹핑된 데이터의 가장 최근날짜로 order by 합니다. 이때 테이블의 createdAt은 id 값이 가장 낮은 것이 나오기때문에.. 컬럼으로 보고싶으시면 max(createdAt)를 추가해주면 됩니다. select *, max(createdAt) from table group by column order by max(createdAt) desc

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!