mysql 行转列和列转行实例详解
MySQL行转列与列转行详解
====================
在数据库操作中,我们经常遇到需要将数据行转换为列,或者将列转换为行的需求。这在MySQL数据库中尤为常见。下面,我将详细介绍如何进行行转列和列转行操作,并提供相应的实例。
一、行转列
-
假设我们有一个成绩表TEST_TB_GRADE,包含学生姓名、科目和成绩。我们希望将每个学生的各科目成绩从多行数据转换为一行数据展示。
建表语句:
```sql
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;
```
```sql
insert into TEST_TB_GRADE(USER_NAME, COURSE, SCORE) values
("张三", "数学", 34),
("张三", "语文", 58),
("张三", "英语", 58),
("李四", "数学", 45),
... (其他数据) ...
```
查询语句实现行转列:
```sql
SELECT
user_name,
MAX(CASE WHEN course = '数学' THEN score ELSE 0 END) AS 数学,
MAX(CASE WHEN course = '语文' THEN score ELSE 0 END) AS 语文,
MAX(CASE WHEN course = '英语' THEN score ELSE 0 END) AS 英语
FROM test_tb_grade GROUP BY USER_NAME;
```
二、列转行
-
假设我们有一个经过行转列处理后的表TEST_TB_GRADE2,包含学生姓名和各科目的成绩列。现在希望将学生的成绩从列转换为行展示。
建表语句:
```sql
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, -- 数学成绩
编程语言
- mysql 行转列和列转行实例详解
- JS获得选取checkbox整行数据的方法
- 歌词编辑器和选择歌曲可播放的网页
- XML解析错误:未组织好 的解决办法
- Ubuntu中启用php的mail()函数并解决发送邮件速度慢
- 让超出DIV宽度范围的文字自动显示省略号...
- 详解Vue.js中.native修饰符
- 微信小程序中使元素占满整个屏幕高度实现方法
- jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止
- php去除头尾空格的2种方法
- SQLServer触发器创建、删除、修改、查看示例代码
- 使用sqlplus创建DDL和DML操作方法
- 关于Idea向GitHub push代码时一直重复提示输入用户
- Yii框架用户登录session丢失问题解决方法
- jQuery获取DOM节点实例分析(2种方式)
- 独孤剑写的马克斯迅雷片库采集插件1.4 官方最新