首页 > 数据库 >Mysql:mysql行转列(数值行和字符行)

Mysql:mysql行转列(数值行和字符行)

时间:2022-12-09 14:36:32浏览次数:40  
标签:INSERT INTO mysql 转列 score VALUES Mysql tb subject

数值行转列

建表

DROP TABLE IF EXISTS tb_score;

CREATE TABLE tb_score(
    id INT(11) NOT NULL auto_increment,
    userid VARCHAR(20) NOT NULL COMMENT '用户id',
    subject VARCHAR(20) COMMENT '科目',
    score DOUBLE COMMENT '成绩',
    PRIMARY KEY(id)
)ENGINE = INNODB DEFAULT CHARSET = utf8;

添加数据

INSERT INTO tb_score(userid,subject,score) VALUES ('001','语文',90);
INSERT INTO tb_score(userid,subject,score) VALUES ('001','数学',92);
INSERT INTO tb_score(userid,subject,score) VALUES ('001','英语',80);
INSERT INTO tb_score(userid,subject,score) VALUES ('002','语文',88);
INSERT INTO tb_score(userid,subject,score) VALUES ('002','数学',90);
INSERT INTO tb_score(userid,subject,score) VALUES ('002','英语',75.5);
INSERT INTO tb_score(userid,subject,score) VALUES ('003','语文',70);
INSERT INTO tb_score(userid,subject,score) VALUES ('003','数学',85);
INSERT INTO tb_score(userid,subject,score) VALUES ('003','英语',90);
INSERT INTO tb_score(userid,subject,score) VALUES ('003','政治',82);

转换

select  
userid,
sum(case when subject='语文' then score else 0 end) as `语文`,
sum(case when subject='数学' then score else 0 end) as `数学`,
sum(case when subject='英语' then score else 0 end) as `英语`,
sum(case when subject='政治' then score else 0 end) as `政治`
from tb_score 
group by userid

字符行转列

建表

CREATE TABLE `tb_basics` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL COMMENT '用户名',
  `skillType` varchar(20) DEFAULT NULL COMMENT '技能类型',
  `skillName` varchar(20) DEFAULT NULL COMMENT '技能',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

添加数据

INSERT INTO `tb_basics`(`id`, `name`, `skillType`, `skillName`) VALUES (1, '张三', '平A', '大逼兜');
INSERT INTO `tb_basics`(`id`, `name`, `skillType`, `skillName`) VALUES (2, '张三', '小绝', '退退退!');
INSERT INTO `tb_basics`(`id`, `name`, `skillType`, `skillName`) VALUES (3, '张三', '大招', '闪电五连鞭');
INSERT INTO `tb_basics`(`id`, `name`, `skillType`, `skillName`) VALUES (4, '李四', '平A', '扫堂腿');
INSERT INTO `tb_basics`(`id`, `name`, `skillType`, `skillName`) VALUES (5, '李四', '小绝', '洪家铁线拳');
INSERT INTO `tb_basics`(`id`, `name`, `skillType`, `skillName`) VALUES (6, '李四', '大招', '齐眉棍');
INSERT INTO `tb_basics`(`id`, `name`, `skillType`, `skillName`) VALUES (7, '王五', '平A', '缩骨功');
INSERT INTO `tb_basics`(`id`, `name`, `skillType`, `skillName`) VALUES (8, '王五', '小绝', '八卦掌');
INSERT INTO `tb_basics`(`id`, `name`, `skillType`, `skillName`) VALUES (9, '王五', '大招', '玄冥神掌');

转换

select  
name,
GROUP_CONCAT(case when skillType='平A' then skillName end Separator ',') as `平A`,
GROUP_CONCAT(case when skillType='小绝' then skillName end Separator ',') as `小绝`,
GROUP_CONCAT(case when skillType='大招' then skillName end Separator ',') as `大招`
from tb_basics 
group by name

 

标签:INSERT,INTO,mysql,转列,score,VALUES,Mysql,tb,subject
From: https://www.cnblogs.com/nhdlb/p/16968855.html

相关文章

  • Mysql 日期大小比较
    Mysql日期大小比较​​mysql时间参数年月日时分秒比较大小​​​​mysql时间参数年月日比较大小​​mysql时间参数年月日时分秒比较大小<selectid="checkTimeR......
  • Mysql开启ssl加密协议及Java客户端配置操作指南
    Mysql开启ssl加密协议及Java客户端配置操作指南​​Mysql配置​​​​验证Mysql开启SSL​​​​Java客户端操作​​​​生成证书密码​​​​配置数据库连接​​​​工具配......
  • mysql8数据类型汇总
    数据类型之enum在Mysql中的Enum数据类型补充:enum类型NOTNULL的时候,默认值是下标为1的值['男','女']的默认值是'男'......
  • ubuntu20.04下安装mysql5.7后,允许远程登录
    1、在mysql的配置文件中设置bind-address=0.0.0.0 2、在databasemysql中设置root用户的host为% 安装deb后使用apt-cachepolicymysql-server查看......
  • mac Django 连接mysql
    目录macdjango2.2正确连接mysql方式问题描述macdjango2.2正确连接mysql方式macDjango电脑连接mysql时候会出现一些错误,因为版本问题。以下操作Django2.2.22亲测有效......
  • 基于Python+Django+Vue+MYSQL的社团管理系统
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • 一键部署MySQL8+keepalived双主热备高可用
    概述本次的文章会格外的长,网上大多的配置流程已经不可使用,本篇文章可以称为保姆级教程,而且通过shell脚本大大减少了部署mysql主从,双主的工作量。如上图,VIP地址为192.168......
  • 【MySQL】将查询结果导出到一个文件
    (1)SQL示例如下,要将如下的SQL查询结果导出到一个txt文件,便于研发做结果内容的核对selectps_partkey,sum(ps_supplycost*ps_availqty)asvaluefromparts......
  • MySQL主从复制与读写分离
    一、案例概述在企业应用中,成熟的业务通常数据量都比较大单台mysql在安全性、高可用性和高并发方面都无法满足实际的需求配置多台主从数据库服务器以实现读写分离二、案例......
  • MySQL基础知识(二)-超详细 Linux安装MySQL5.7完整版教程及遇到的坑
    1.简介 我们经常会在Linux上安装MySQL数据库,但是安装的时候总是会这里错,那里错,不顺利,今天整理了一下安装流程,连续安装来了两遍,没有遇到什么大错误,基本上十分钟左右可以搞......