질문드립니ㅏㄷ. 0 1 1,412

by 튼실맨 [MySQL] [2022.10.20 15:49:05]


데이터가 

seq | name

1 | 병장

2 | 상병

이런식으로 들어가있는데

리스트 긁어올 때

저 seq 를 1,2 이런식으로 긁어오거든요?

그럼 저 1,2에 대응하는 이름들을 어떻게 긁어와야 할까요? 

병장,상병

이런식으로 긁어오고 싶습니다.

by 마농 [2022.10.20 16:07:36]
WITH code_t AS
(
SELECT 1 seq, '병장' name
UNION ALL SELECT 2, '상병'
UNION ALL SELECT 3, '일병'
UNION ALL SELECT 4, '이병'
UNION ALL SELECT 5, '쫄병'
)
, data_t AS
(
SELECT 1 id, '1,2' seqs
UNION ALL SELECT 2, '3,4'
UNION ALL SELECT 3, '3,1,2'
)
SELECT a.id
     , a.seqs
     , GROUP_CONCAT(b.name ORDER BY FIND_IN_SET(b.seq, a.seqs)) names
  FROM data_t a
 INNER JOIN code_t b
    ON FIND_IN_SET(b.seq, a.seqs) > 0
 GROUP BY a.id, a.seqs
;

 

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