MySQL 테이블 열의 값들을 하나로 묶기

MySQL의 테이블에서 특정 열에 존재하는 값들이 무엇이 있는지 파악하고자 합니다.

예컨대 “Food” 라는 테이블이 있다고 할까요?

이 “Food” 라는 테이블에 “Fruit” “Drink” “Meet” 이렇게 3개의 열이 있다고 가정합시다.

Food Table

Food Table

Fruit Drink Meat
Apple Water Chicken
Apple Tea Beef
Banana Coffee Pork
Banana Milk Lamb
Pineapple Orange Juice Duck

위와 같이 말이죠.

여기서 저는 Fruit 이라는 열에 어떤 값들이 존재하는지 파악하고자 합니다.

지금 보면 Fruit 이라는 테이블에는 총 3개의 종류의 값들이 들었습니다.

이걸 “Apple, Banana, Pineapple” 과 같이 출력하는 것이 목적입니다.

해당 열이 어떤 값들로 이뤄졌는지 파악하기 위함입니다.

쿼리

				
					SELECT GROUP_CONCAT(DISTINCT Fruit SEPARATOR ', ') AS Fruits
FROM Food;

				
			

이를 위해서 위와 같은 쿼리를 시행할 수 있습니다.

이렇게 하면 Fruit 이라는 열에서 고유한 값들만을 뽑고, 이를 “,” 이라는 구분자로 묶어서 출력이 가능하죠.

출력하면 {“Fruits” : [“apple, banana, pineapple”] } 과 같은 구조로 출력이 될 겁니다.

AS 로 지정한 값이 새로운 열의 값이 되고, 고유한 값들을 묶어서 하나의 셀 안에 보여주게 됩니다. 

				
					SELECT DISTINCT Fruit FROM Food;

				
			

원리를 파악하자면 이렇습니다.

우선 DISTINCT 는 특정 열에서 중복값을 제외하고 고유한 값들만을 남기는 명령어입니다.

“별개의, 뚜렷한” 이라는 뜻을 가진 형용사이기도 하죠.

				
					GROUP_CONCAT(DISTINCT Fruit SEPARATOR ", ");
				
			

GROUP_CONCAT 는 여러 개의 행으로 출력된 값들을 하나로 묶어주는 역할을 하는 명령어입니다.

DISTINCT 로 고유한 값들을 여러 개의 행으로 출력한 것을 “, ” 이라는 구분자로 묶어주는 거죠.

마치며...

이제 문제없이 내 테이블에서 특정 열이 어떤 값들로 구성이 되었고 그것을 조작하는 것이 가능해졌습니다!