>  기사  >  데이터 베이스  >  mysql 행에서 열로, 열에서 행으로 변환을 구현하기 위한 샘플 코드 공유

mysql 행에서 열로, 열에서 행으로 변환을 구현하기 위한 샘플 코드 공유

黄舟
黄舟원래의
2017-03-23 13:43:162198검색

이 글에서는 mysql 행 대 열 및 열 대 행 예제를 주로 소개합니다. 필요한 친구는

mysql 행 대 열 및 열 대 행을 참조할 수 있습니다.

문장은 어렵지 않으니 길게 설명하지 않겠습니다. 문장을 읽을 때 문장 단위로 안쪽부터 분석해 보세요.

행을 열로 변환

그림과 같은 테이블이 있습니다. 이제 쿼리 결과를 행을 열로 변환하고 싶습니다.

mysql 행에서 열로, 열에서 행으로 변환을 구현하기 위한 샘플 코드 공유

테이블 생성문은 다음과 같습니다.

CREATE TABLE `TEST_TB_GRADE` (
 `ID` int(10) NOT NULL AUTO_INCREMENT,
 `USER_NAME` varchar(20) DEFAULT NULL,
 `COURSE` varchar(20) DEFAULT NULL,
 `SCORE` float DEFAULT '0',
 PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
rrree

쿼리문:

여기서 MAX를 사용한 이유는 NULL을 방지하기 위해 데이터가 없는 지점을 0으로 설정하기 위함입니다

insert into TEST_TB_GRADE(USER_NAME, COURSE, SCORE) values
("张三", "数学", 34),
("张三", "语文", 58),
("张三", "英语", 58),
("李四", "数学", 45),
("李四", "语文", 87),
("李四", "英语", 45),
("王五", "数学", 76),
("王五", "语文", 34),
("王五", "英语", 89);

결과 표시:

mysql 행에서 열로, 열에서 행으로 변환을 구현하기 위한 샘플 코드 공유

열에서 행으로

다음과 같은 테이블이 있습니다. 이제 쿼리 결과가 행에 나열되기를 바랍니다

mysql 행에서 열로, 열에서 행으로 변환을 구현하기 위한 샘플 코드 공유

테이블 생성 문은 다음과 같습니다.

SELECT user_name ,
  MAX(CASE course WHEN '数学' THEN score ELSE 0 END ) 数学,
  MAX(CASE course WHEN '语文' THEN score ELSE 0 END ) 语文,
  MAX(CASE course WHEN '英语' THEN score ELSE 0 END ) 英语
FROM test_tb_grade
GROUP BY USER_NAME;
CREATE TABLE `TEST_TB_GRADE2` (
 `ID` int(10) NOT NULL AUTO_INCREMENT,
 `USER_NAME` varchar(20) DEFAULT NULL,
 `CN_SCORE` float DEFAULT NULL,
 `MATH_SCORE` float DEFAULT NULL,
 `EN_SCORE` float DEFAULT '0',
 PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

쿼리 문:

insert into TEST_TB_GRADE2(USER_NAME, CN_SCORE, MATH_SCORE, EN_SCORE) values
("张三", 34, 58, 58),
("李四", 45, 87, 45),
("王五", 76, 34, 89);

결과 표시:

mysql 행에서 열로, 열에서 행으로 변환을 구현하기 위한 샘플 코드 공유

위 내용은 mysql 행에서 열로, 열에서 행으로 변환을 구현하기 위한 샘플 코드 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.