Maison  >  Article  >  base de données  >  Exemple de partage de code pour implémenter la conversion de ligne en colonne et de colonne en ligne MySQL

Exemple de partage de code pour implémenter la conversion de ligne en colonne et de colonne en ligne MySQL

黄舟
黄舟original
2017-03-23 13:43:162197parcourir

Cet article présente principalement les informations pertinentes sur les exemples mysql ligne à colonne et colonne à ligne. Les amis dans le besoin peuvent se référer à

mysql ligne à colonne et colonne à ligne.

La déclaration n'est pas difficile, donc je ne l'expliquerai pas trop. Lorsque vous lisez la déclaration, analysez-la phrase par phrase de l'intérieur.

Convertir les lignes en colonnes

Il y a un tableau comme indiqué sur l'image. Maintenant, je veux que les résultats de la requête convertissent les lignes en colonnes

Exemple de partage de code pour implémenter la conversion de ligne en colonne et de colonne en ligne MySQL

.

L'instruction de création de table est la suivante :

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;
insert into TEST_TB_GRADE(USER_NAME, COURSE, SCORE) values
("张三", "数学", 34),
("张三", "语文", 58),
("张三", "英语", 58),
("李四", "数学", 45),
("李四", "语文", 87),
("李四", "英语", 45),
("王五", "数学", 76),
("王五", "语文", 34),
("王五", "英语", 89);

Instruction de requête :

La raison pour laquelle MAX est utilisé ici est de définir les points sans données sur 0 à empêcher NULL

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;

Affichage des résultats :

Exemple de partage de code pour implémenter la conversion de ligne en colonne et de colonne en ligne MySQL

Colonne à rangée

Il y a un tableau comme indiqué sur l'image, j'espère maintenant que les résultats de la requête seront répertoriés en lignes

Exemple de partage de code pour implémenter la conversion de ligne en colonne et de colonne en ligne MySQL

L'instruction de création de table est la suivante :

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);

Instruction de requête :

select user_name, '语文' COURSE , CN_SCORE as SCORE from test_tb_grade2
union select user_name, '数学' COURSE, MATH_SCORE as SCORE from test_tb_grade2
union select user_name, '英语' COURSE, EN_SCORE as SCORE from test_tb_grade2
order by user_name,COURSE;

Affichage du résultat :

Exemple de partage de code pour implémenter la conversion de ligne en colonne et de colonne en ligne MySQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn