MySQL의 테이블에서 특정 열에 존재하는 값들이 무엇이 있는지 파악하고자 합니다.
예컨대 “Food” 라는 테이블이 있다고 할까요?
이 “Food” 라는 테이블에 “Fruit” “Drink” “Meet” 이렇게 3개의 열이 있다고 가정합시다.
| 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 로 고유한 값들을 여러 개의 행으로 출력한 것을 “, ” 이라는 구분자로 묶어주는 거죠.
이제 문제없이 내 테이블에서 특정 열이 어떤 값들로 구성이 되었고 그것을 조작하는 것이 가능해졌습니다!