MySql group_concat 관련하여 문의드립니다. 0 4 814

by 김민재 [MySQL] Mysql query group_concat [2022.04.07 12:18:26]


안녕하세요 현재 Mysql을 사용해서 쿼리를 짜고 있는데 도중에 group_concat에 관해 문의가 생겨 글을 남깁니다.

 

SELECT A.ID, group_concat(B.NAME ORDER BY CNT DESC) AS 'BNAMES'

FROM A INNER JOIN B ON A.ID = B.AID

 

이렇게 사용했을땐 BNAMES라는 컬럼이 원하는대로 출력이 됩니다. 하지만 여기서 B.NAME에 조건을 추가해버리면 BNAMES은 조건 안에 부합된 것들만 출력이 되는데 어떻게 쿼리를 변경해야할지 막막하여 문의드립니다.ㅠ

B.NAME IN 조건과 상관 없이  BNAME은 다 나왔으면 좋겠습니다.

SELECT A.ID, group_concat(B.NAME ORDER BY CNT DESC) AS 'BNAMES'

FROM A INNER JOIN B ON A.ID = B.AID

WHERE B.NAME IN ( XXXXXXXXX, XXXXX, XXX )
by 마농 [2022.04.07 14:18:24]

1. 질문의 쿼리들이 다 이상합니다.
MySQL 에서는 정상 동작하지만. 타 DB 에서는 오류가 나는 비표준 구문입니다.
그룹바이 집계 쿼리의 표준에 어긋나는 구문입니다.
- GROUP BY a.id 를 해야 하거나 -> ID 별 집계
- SELECT 절에서 a.id 를 빼야 합니다. -> 전체 집계
2. 질문도 이상합니다.
- 조건은 주되 다나와야 한다?
- 조건을 빼면 되죠?
3. 원본 대비 원하는 결과 샘플 예를 들어 주시면 좋겠습니다.


by 김민재 [2022.04.07 15:59:59]

죄송합니다 질문을 조금 잘못 작성했습니다. 아랫분 쿼리 이용해서 하니 정상적으로 작동하였습니다. 다음부턴 한번 더 확인하고 글 작성하겠습니다..!


by 신이만든지기 [2022.04.07 15:02:20]

이런의미로 말씀하신 건지요?

SELECT *
FROM (
         SELECT a.id, group_concat(b.name ORDER BY cnt DESC) AS bnames
         FROM a INNER JOIN b ON a.id = b.id
         GROUP BY a.id) tmp
WHERE bnames LIKE '%키워드1%'
   OR bnames LIKE '%키워드2%';

 


by 김민재 [2022.04.07 16:01:24]

감사합니다 질문이 이상한데도 답변해주신 대로 해보니 정상작동합니다!

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