mysql行转列、列转行

语句不难,不做多余解释了,看语句时,从内往外一句一句剖析

行转列

有如图所示的表,现在希望查询的结果将行转成列

建表语句如下:

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

查询语句:

此处用之所以用max是为了将无数据的点设为0,防止出现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;

结果展示:

列转行

有如图所示的表,现在希望查询的结果将列成行

建表语句如下:

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

查询语句:

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;

结果展示:

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

mysql行转列和列转行_mysql 行转列和列转行实例详解相关推荐

  1. mysql通过集合查询_MySQL使用集合函数进行查询操作实例详解

    本文实例讲述了MySQL使用集合函数进行查询操作.分享给大家供大家参考,具体如下: COUNT函数 SELECT COUNT(*) AS cust_num from customers; SELECT ...

  2. mysql添加新的实例_MySQL中添加新用户权限的实例详解

    有2个不同的方法增加用户:通过使用GRANT语句或通过直接操作MySQL授权表.比较好的方法是使用GRANT语句,因为他们是更简明并且好像错误少些. 下面的例子显示出如何使用MySQL客户安装新用户. ...

  3. mysql 1061原因_MySQL死锁问题分析及解决方法实例详解(转)

    出处:http://www.jb51.net/article/51508.htm MySQL死锁问题是很多程序员在项目开发中常遇到的问题,现就MySQL死锁及解决方法详解如下: 1.MySQL常用存储 ...

  4. mysql 查询 集合_MySQL使用集合函数进行查询操作实例详解

    本文实例讲述了MySQL使用集合函数进行查询操作.分享给大家供大家参考,具体如下: COUNT函数 SELECT COUNT(*) AS cust_num from customers; SELECT ...

  5. mysql数据库truncate 夯住_MySQL如何优雅的删除大表实例详解

    前言 删除表,大家下意识想到的命令可能是直接使用DROP TABLE "表名",这是初生牛犊的做法,因为当要删除的表达空间到几十G,甚至是几百G的表时候.这样一条命令下去,MySQ ...

  6. oracle两列同时去重_Oracle表中重复数据去重的方法实例详解

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  7. mysql将权限分为几个层级_MySQL多层级结构-区域表使用树详解

    1.1. 前言 前面我们大概介绍了一下树结构表的基本使用.在我们项目中有好几块有用到多层级的概念.下面我们哪大家都比较熟悉的区域表来做演示. 1.2. 表结构和数据 区域表基本结构,可能在你的项目中还 ...

  8. mysql 创建删除表_mysql创建删除表的实例详解

    表的创建命令需要: 表的名称 字段名称 定义每个字段(类型.长度等) 语法 下面是通用的SQL语法用来创建MySQL表: CREATE TABLE table_name (column_name ...

  9. mysql心得体会一百字_MYSQL CPU 100%实例详解

    MYSQL CPU 100%实例详解 2011/7/2 11:19:19作者:xy我要评论(0) 自己的一台主机(Windows 2003 + IIS + PHP + MYSQL )近来 MySQL ...

  10. mysql模糊查询实例_Mysql实例sql模糊查询实例详解

    <Mysql实例sql模糊查询实例详解>要点: 本文介绍了Mysql实例sql模糊查询实例详解,希望对您有用.如果有疑问,可以联系我们. 导读:常用的模糊查询语句:select 字段 fr ...

最新文章

  1. Java多线程的11种创建方式以及纠正网上流传很久的一个谬误
  2. 洛奇6里很喜欢的一段话!洛奇6经典台词!而是你能挨多重,并且坚持向前,你能承受多少并且坚持向前,这样才叫胜利!
  3. LINUX按照物理地址预取,linux – 如何以编程方式禁用硬件预取?
  4. ARM:钒和铁替代固氮酶的前世今生
  5. Linux操作系统下以不同颜色命名的文件类型
  6. 《深入理解 Java 内存模型》读书笔记(上)(干货,万字长文)
  7. elasticsearch-7.3安装
  8. ES6对象(2):面向对象与类
  9. 对象运算符.和[]的用法
  10. 创建设计模式 - Builder设计模式
  11. Go 语言设计与实现纸质书出版,为信仰补票
  12. 代理模式 委派模式 策略模式_委派模式和策略模式
  13. 深度学习笔记_ RestNet-50
  14. C++ 文件输入输出问题
  15. 【VScode】ubuntu系统的 VScode 调不出中文输入法
  16. 基于SSM的汽车租赁系统
  17. 人工智能发展历程、机器学习分类、人工智能设计到的数学知识
  18. 微信小程序在线考试项目开发-用户授权登录、身份信息获取
  19. NMOS和PMOS管
  20. hive No matching method for class hiveUDF.PhoneTM with (string, int, int)

热门文章

  1. Spark Scala语言学习系列之完成HelloWorld程序(三种方式)
  2. 使用webpack打包的后,公共请求路径的配置问题
  3. Python中lambda表达式学习
  4. android 版本控制
  5. visual studio 多行编辑 列编辑
  6. 安装终端服务和终端服务授权,激活终端服务授权
  7. 基于SSM实现个人博客系统
  8. 继承与多态——动手又动脑
  9. Taints和Tolerations
  10. windows下 nginx安装 使用