대머리개발자

group_concat 속 문자 정렬하기 본문

개발이야기/DataBase

group_concat 속 문자 정렬하기

대머리개발자 2024. 5. 31. 13:28
728x90

해당 기능이 있는 줄은... 역시 뭐든 잘 얻어 걸려야 한다. (잘 검색해야 한다.)

group_concat은 row 데이터를 column 로 변경해 준다.

 

설문지 응답 데이터이다.

 

특정 사용자로 group by를 하고 응답을 하나의 Row으로 변경한다.

물론 데이터를 구분 할 수 있는 딜리미터(|@|)가 필요하다.

group_concat(qc.view SEPARATOR '|@|')
...
group by userId

 

여기서 내가 원했던 기능은 질문의 순서대로 row가 정렬하고자 했던 부분이다.

질문지의 ID로 group_concat을 했더니 엉망이다...ㅠ

 

 

그냥 row 레벨로 풀어서 엑셀 내보내기를 해두 된다. But 서비스 로직이 복잡해 진다.

복잡해 지면 추후에 다시 볼 때 머리에 지진이 온다.

해서 뭐든 최대한 심플하게 우하하게 풀어 내야 한다. 

꾸역꾸역 만들면 안 된다. 똥 된다.

 

간단하게 group_concat 안에 questionId asc를 명시해주면 된다.

 group_concat(value ORDER BY a.questionId ASC SEPARATOR '|@|')
 group by a.userId, a.questionId
 -- order by a.userId, a.questionId

 

사실 "group by [컬럼]절"은 "order by [컬럼] asc절" 를 기본으로 포함하는 것으로 알고 있었기 때문에 

그냥 당연히 questionId asc 형태로 group_concat이 될 줄 알았다.

 

앗.. 질문의 순서가 바뀐다면....ㅅㅂ

순서를 명시한 sort를 통해서 정렬을 다시 했다. ㅎㅎ

 

 

 

 

 

728x90