반응형
MySQL/MariaDB의 다른 행에 있는 동일한 열에 있는 두 셀의 데이터를 병합합니다.
용어 및 SQL에 대한 지식이 부족하기 때문에 이 질문에 대한 답을 찾는 데 어려움을 겪고 있습니다.
다음 테이블을 가진 데이터베이스가 있습니다.
desc pkm;
+-----------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+-------+
| pkm_code | int(11) | NO | PRI | NULL | |
| pkm_name | varchar(32) | NO | UNI | NULL | |
| pkm_category | varchar(32) | NO | | NULL | |
| pkm_description | varchar(1280) | NO | | NULL | |
| pkm_weight | float | NO | | NULL | |
| evolution_code | int(11) | YES | MUL | NULL | |
+-----------------+---------------+------+-----+---------+-------+
desc poktype;
+---------------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+------------+------+-----+---------+-------+
| pkm_code | int(11) | NO | PRI | NULL | |
| type_code | int(11) | NO | PRI | NULL | |
| poketype_is_primary | tinyint(1) | NO | | NULL | |
+---------------------+------------+------+-----+---------+-------+
설명 유형
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| type_code | int(11) | NO | PRI | NULL | |
| type_name | varchar(32) | NO | UNI | NULL | |
+-----------+-------------+------+-----+---------+-------+
그리고 지금까지 다음과 같은 SQL 명령어가 있습니다.
SELECT pkm.pkm_code, pkm.pkm_name,type.type_name FROM poketype
JOIN pkm ON pkm.pkm_code=poketype.pkm_code
JOIN type ON poketype.type_code=type.type_code
WHERE pkm.pkm_code<=151
ORDER BY pkm_code;
프라이머리 타입과 세컨더리 타입이 다른 행에 표시됩니다.
듀얼 타입의 포켓몬이라면 어떻게 하면 두 타입을 같은 열에 표시할 수 있을까요?
현재 결과:
+-----------+-------------+-----------+
| pkm_code | pkm_name | type_name |
+-----------+-------------+-----------+
| 1 | Bulbasaur | grass |
| 1 | Bulbasaur | poison |
원하는 결과:
+-----------+-------------+-------------+
| pkm_code | pkm_name | type_name |
+-----------+-------------+-------------+
| 1 | Bulbasaur | grass,poison|
(네, bulbasaur는 듀얼 타입입니다.나도 놀랐어!)
mysql의 group_concat() 함수를 사용하여 여러 레코드의 값을 하나의 값으로 결합합니다.
SELECT pkm.pkm_code, pkm.pkm_name, group_concat(type.type_name) as typename FROM poketype
JOIN pkm ON pkm.pkm_code=poketype.pkm_code
JOIN type ON poketype.type_code=type.type_code
WHERE pkm.pkm_code<=151
GROUP BY pkm.pkm_code, pkm.pkm_name;
언급URL : https://stackoverflow.com/questions/36238386/merge-data-from-two-cells-from-the-same-column-in-different-rows-in-mysql-mariad
반응형
'programing' 카테고리의 다른 글
MySQL에서 두 개의 단일 열 인덱스와 하나의 두 열 인덱스를 비교하시겠습니까? (0) | 2022.11.21 |
---|---|
요청이 GET인지 POST인지 확인합니다. (0) | 2022.11.21 |
PHP의 stdClass란 무엇입니까? (0) | 2022.11.21 |
Vuetify 회전목마 높이 변경 (0) | 2022.11.21 |
Android Studio에 번들된 JDK를 JAVA로 사용Mac에서의 홈 (0) | 2022.11.21 |