2016-12-08 2 views
-3

mysql에서 텍스트 필드를 group_concat하려고했으나 첫 번째 값만 가져옵니다 (값이 '177,178'인 경우).이 값을 텍스트 필드로 저장하므로 177을 사용합니다. 이 필드를 사용하여 group_concat을 수행 할 수 있습니까? mysql의 group_concat 텍스트 필드

내 쿼리

같은 같습니다

SELECT GROUP_CONCAT(abc.displayValue SEPARATOR ' ') FROM abc WHERE abc.lookupId IN ('177,178') 

답변

0

당신은 당신의 IN 내에서 따옴표를 잘못두기 있습니까?

SELECT GROUP_CONCAT(abc.displayValue SEPARATOR ',') FROM abc WHERE abc.lookupId IN (177,178) 
+0

누락 된 쉼표로 인해이 문제가 발생하는 이유는 무엇입니까? – Barmar

+0

쉼표가 기본 구분 기호이므로, 저는 그가 정말로 대신 공간을 사용하려고한다고 생각합니다. – Barmar

+0

@Barmar 네, 맞아요! 그것은 그것을 가지고 있어야합니다. 그것을 지적 +1. 나는 대답을 편집했다. – Kulasangar

0

문제는 GROUP_CONCAT하지입니다이 문제는 WHERE 절은 하나 개의 행을 선택하는 것입니다 것입니다. lookupId 필드가 정수이기 때문에 문자열 '177,178'을 정수로 변환합니다.이 값은 단지 177입니다. IN() 목록의 값을 따옴표로 묶어서는 안되며, 검색 할 값이 하나뿐입니다.

SELECT GROUP_CONCAT(abc.displayValue SEPARATOR ' ') 
FROM abc 
WHERE abc.lookupId IN (177, 178) 

쉼표로 구분 된 문자열은 실제로 당신이 가입하고 테이블의 열에서 오는 경우, sql join tables where 1 column has comma를 참조하십시오.

SELECT GROUP_CONCAT(table1.displayValue SEPARATOR ' ') 
FROM table1 
JOIN table2 ON FIND_IN_SET(table1.lookupID, table2.lookupIDs) 
WHERE ... 
+0

사실, 나는 177,178을 하나의 행에 저장해야하기 때문에이 lookupID를 varchar 필드로 저장하고 있습니다. (앞으로는 179,180과 같은 단일 행에 더 많은 값을 저장해야 할 수도 있습니다.) 형식 '177,178'(예 : 'abc').이 177,178을 단일 문자로 사용합니다. 이렇게 그룹화하는 방법은? – rekha

+0

쉼표로 구분 된 값을 단일 필드에 저장하면 안됩니다. 각 'lookupID'가 다른 행에있는 다른 테이블을 사용해야합니다. 그러나 이와 관련하여 궁금한 점이 있으시면 http://stackoverflow.com/questions/25611999/sql-join-tables-where-1-column-has-comma/25612053#25612053을 참조하십시오. – Barmar