Maison >base de données >tutoriel mysql >Exemple de partage de code pour implémenter la conversion de ligne en colonne et de colonne en ligne MySQL
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
.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 :
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
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 :
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!