2017-03-15 2 views
1

내 표 첫째로 가정하자 다른 테이블 및 CONCATENATE 결과 값에서 값을 얻을 수있다 : 표 2별도의 쉼표와

id name 
---------- 
1 abc 
2 bcd 
3 cde 

내가

id table1_id 
------------ 
1 1,2 
2 1,3 
3 1,2,3 

를 저장 내가 원하는이

id table1_value 
---------------- 
1 abc,bcd 
2 abc,cde 
3 abc,bcd,cde 
같은 출력

제발 도와주세요 mysql 쿼리 ..

+3

당신은 지금 RDBMS에서 CSV 값을 저장하는 정규화의 장점과 단점을 볼 수 있습니다. 이 문제에 대한 해킹이 가능한 솔루션을 찾을 수 있지만 (실제로 데이터 크기를 줄이면 완전히 느려질 것입니다), 실제 문제는 테이블 구조입니다. – GurV

+0

[데이터베이스 열에 구분 된 목록을 저장하는 것이 실제로 그렇게 잘못 되었습니까?] (http://stackoverflow.com/a/3653574/20860) –

답변

3

다음은 요구 사항을 충족해야하는 쿼리입니다. @GurV가 위에서 언급했듯이 정규화되지 않은 테이블에 CSV 데이터를 저장하지 않아야하며 MySQL이 관계형 데이터베이스로 가지고있는 많은 힘을 저해합니다.

SELECT t2.id, 
     GROUP_CONCAT(t1.name ORDER BY t1.name) AS table1_value 
FROM table2 t2 
INNER JOIN table1 t1 
    ON FIND_IN_SET(t1.id, t2.table1_id) > 0 
GROUP BY t2.id 

출력 : 여기

enter image description here

데모 :

Rextester

관련 문제