개발 과정에서 역사적 이유나 성능상의 이유로 테이블의 컬럼 데이터를 행 데이터로 변환하거나, 행 데이터를 컬럼 데이터로 변환하여 사용할 필요가 있습니다. mysql 테이블 데이터의 열과 완전한 데모 예제 및 SQL 기술을 제공합니다.
테스트 데이터 테이블 및 데이터 만들기
CREATE TABLE `option` ( `category_id` int(10) unsigned NOT NULL COMMENT '分类id', `name` varchar(20) NOT NULL COMMENT '名称', KEY `category_id` (`category_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `option` (`category_id`, `name`) VALUES (1, '大'), (1, '中'), (1, '小'), (2, '奔驰'), (2, '宝马'), (3, '2015'), (3, '2016'), (3, '2017'), (3, '2018'), (4, '1m'), (4, '2m');mysql> select * from `option`; +-------------+--------+| category_id | name | +-------------+--------+| 1 | 大 | | 1 | 中 | | 1 | 小 | | 2 | 奔驰 | | 2 | 宝马 | | 3 | 2015 | | 3 | 2016 | | 3 | 2017 | | 3 | 2018 | | 4 | 1m || 4 | 2m | +-------------+--------+
행을 열로 변환한 후 다음 결과를 예상하세요
+-------------+---------------------+| category_id | name | +-------------+---------------------+| 1 | 大,中,小 | | 2 | 奔驰,宝马 | | 3 | 2015,2016,2017,2018 || 4 | 1m,2m | +-------------+---------------------+
행을 열로 변환하려면 group_concat()을 사용할 수 있습니다. 기능이 그룹과 결합되었습니다. 달성자.
group_concat() 함수는 표현식 조합의 연결 값을 가져올 수 있습니다. 기본 구분 기호는 쉼표이며 구분 기호를 통해 다른 구분 기호로 설정할 수 있습니다.
참고: group_concat() 함수에는 반환된 결과에 길이 제한이 있습니다. 기본값은 1024바이트이지만 일반적인 상황에서는 충분합니다.
group_concat() 함수 사용에 대해서는 이전 기사인 "mysql 함수 concat 및 group_concat 사용 지침"을 참조하세요.
실행 결과:
mysql> select category_id,group_concat(name) as name from `option` group by category_id order by category_id; +-------------+---------------------+| category_id | name | +-------------+---------------------+| 1 | 大,中,小 | | 2 | 奔驰,宝马 | | 3 | 2015,2016,2017,2018 || 4 | 1m,2m | +-------------+---------------------+
테스트 데이터 테이블 및 데이터 만들기
CREATE TABLE `option2` ( `category_id` int(10) unsigned NOT NULL COMMENT '分类id', `name` varchar(100) NOT NULL COMMENT '名称集合') ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `option2` (`category_id`, `name`) VALUES (1, '大,中,小 '), (2, '奔驰,宝马'), (3, '2015,2016,2017,2018'), (4, '1m,2m');mysql> select * from `option2`; +-------------+---------------------+| category_id | name | +-------------+---------------------+| 1 | 大,中,小 | | 2 | 奔驰,宝马 | | 3 | 2015,2016,2017,2018 || 4 | 1m,2m | +-------------+---------------------+
열을 행으로 변환한 후 다음과 같은 결과를 예상하세요
+-------------+--------+| category_id | name | +-------------+--------+| 1 | 大 | | 1 | 中 | | 1 | 小 | | 2 | 奔驰 | | 2 | 宝马 | | 3 | 2015 | | 3 | 2016 | | 3 | 2017 | | 3 | 2018 | | 4 | 1m || 4 | 2m | +-------------+--------+
열을 행으로 변환하는 것은 행을 열로 변환하는 것보다 더 복잡합니다. 구분 기호로 substring_index() 함수를 사용하여 출력을 분할하고 Cartesian product와 결합하여 루프를 구현할 수 있습니다.
select a.category_id,substring_index(substring_index(a.name,',',b.category_id),',',-1) as name from `option2` as ajoin `option2` as b on b.category_id<=(length(a.name) - length(replace(a.name,',',''))+1)order by a.category_id,b.category_id;
실행 결과:
mysql> select a.category_id,substring_index(substring_index(a.name,',',b.category_id),',',-1) as name from `option2` as a -> join `option2` as b on b.category_id<=(length(a.name) - length(replace(a.name,',',''))+1) -> order by a.category_id,b.category_id; +-------------+--------+| category_id | name | +-------------+--------+| 1 | 大 | | 1 | 中 | | 1 | 小 | | 2 | 奔驰 | | 2 | 宝马 | | 3 | 2015 | | 3 | 2016 | | 3 | 2017 | | 3 | 2018 | | 4 | 1m || 4 | 2m | +-------------+--------+
이 글에서는 mysql 테이블 데이터의 행과 열을 변환하는 방법에 대해 설명하고 있으며, 자세한 내용은 PHP 중국어 홈페이지를 참고해주세요.
관련 권장 사항:
여러 개의 1차원 배열을 2차원 배열로 결합하는 php 메서드
php 메서드에서 지정된 여러 열을 반환하는 메서드 배열
위 내용은 MySQL 테이블 데이터 행과 열 변환 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!