category
열이있는 테이블이 있습니다. 고객 선택과 함께 각 행에 가능한 값 - 즉 해당 하위 집합의 범주의 모든 고유 값을 선택하고 싶습니다.쿼리에서 고유 값을 선택하고 하나의 열로 연결하는 방법
내 표는 다음과 같습니다
| id | name | category |
------------------------------------
| 1 | Test Client | Retail |
| 2 | Test Client 2 | Corporate |
| 3 | Test Client 3 | Retail |
| 4 | Test Client 4 | Retail |
| 5 | Test Client 5 | Leisure |
나는 GROUP_CONCAT 트릭 할 것이라고 생각 :
SELECT `client`.*, GROUP_CONCAT(DISTINCT client.category) AS possible_categories
FROM (`client`)
WHERE `name` LIKE '%query%'
GROUP BY `client`.`id`
를 ...하지만 그것은 단지 나에게 해당 행의 범주가 아닌 다른 사람을 제공합니다.
코드에서 할 수 있지만 O (n) 작업이므로 처리 시간을 절약 할 수 있습니다. 여기에 내가 설명을 목적으로, 코드에서 할 수있는 방법은 다음과 같습니다 당신이 일치하는 이름에 사용할 수있는 범주를 의미 가정
| id | name | category | possible_categories |
---------------------------------------------------------------
| 1 | Test Client | Retail | Retail,Corporate,Leisure |
| 2 | Test Client 2 | Corporate | Retail,Corporate,Leisure |
| 3 | Test Client 3 | Retail | Retail,Corporate,Leisure |
| 4 | Test Client 4 | Retail | Retail,Corporate,Leisure |
| 5 | Test Client 5 | Leisure | Retail,Corporate,Leisure |
테이블 정의 및 샘플 데이터를 질문에 추가 할 때 유용 할 수 있습니다. –
Aziz, done, thank you –
그 테이블에서 'id'는 기본 키처럼 보입니까? 올바른 경우, GROUP BY가 어떻게 할 수 있습니까? 그것은 항상 하나의 '그룹당 줄'이 될 것입니다. – barryhunter