Detailed examples of converting rows to columns and columns to rows in MySQL

Detailed examples of converting rows to columns and columns to rows in MySQL

mysql row to column, column to row

The sentence is not difficult, so I won't explain it in detail. When reading the sentence, analyze it sentence by sentence from the inside out.

Row to Column

There is a table as shown in the figure. Now we want to convert the rows into columns in the query result.

1

The table creation statement is as follows:

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
("Zhang San", "Mathematics", 34),
("Zhang San", "Chinese", 58),
("Zhang San", "English", 58),
("Li Si", "Mathematics", 45),
("Li Si", "Chinese", 87),
("Li Si", "English", 45),
("Wang Wu", "Mathematics", 76),
("Wang Wu", "Chinese", 34),
("Wang Wu", "English", 89);

Query statement:

The reason why MAX is used here is to set the points with no data to 0 to prevent NULL

SELECT user_name ,
  MAX(CASE course WHEN '数学' THEN score ELSE 0 END ) Mathematics,
  MAX(CASE course WHEN 'Chinese' THEN score ELSE 0 END ) Chinese,
  MAX(CASE course WHEN 'English' THEN score ELSE 0 END ) English FROM test_tb_grade
GROUP BY USER_NAME;

Results:

2

Column to Row

There is a table as shown in the figure. Now we hope that the query results will be listed in rows

3

The table creation statement is as follows:

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
("Zhang San", 34, 58, 58),
("Li Si", 45, 87, 45),
("Wang Wu", 76, 34, 89);

Query statement:

select user_name, 'Language' 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, 'English' COURSE, EN_SCORE as SCORE from test_tb_grade2
order by user_name,COURSE;

Results:

4

Thank you for reading, I hope it can help you, thank you for your support of this site!

You may also be interested in:
  • Simple implementation of SQL row to column and column to row
  • SQL row to column and column to row code explanation
  • The ultimate solution for converting rows to columns and columns to rows in mssql database
  • SQL row to column and column to row

<<:  JavaScript typing game

>>:  Linux forced release of occupied ports and Linux firewall port opening method detailed explanation

Recommend

The whole process of upgrading Angular single project to multiple projects

Table of contents Preface Development Environment...

VMware Workstation is not compatible with Device/Credential Guard

When installing a virtual machine, a prompt appea...

How to access the local machine (host machine) in Docker

Question How to access the local database in Dock...

HTML special character conversion table

character Decimal Character Number Entity Name --...

18 sets of exquisite Apple-style free icon materials to share

Apple Mug Icons and Extras HD StorageBox – add on...

JavaScript web form function communication full of practical information

1. Introduction Earlier we talked about the front...

Shell script nginx automation script

This script can satisfy the operations of startin...

JavaScript canvas to achieve code rain effect

This article shares the specific code for canvas ...

Solution to Tomcat server failing to open tomcat7w.exe

I encountered a little problem when configuring t...

An article to help you understand Js inheritance and prototype chain

Table of contents Inheritance and prototype chain...

Detailed explanation of how to view the number of MySQL server threads

This article uses an example to describe how to v...

Implementation of FIFO in Linux process communication

FIFO communication (first in first out) FIFO name...

MySQL data insertion efficiency comparison

When inserting data, I found that I had never con...