mysql 行转列和列转行实例详解

作者:lqh 时间:2024-01-24 15:18:26 

mysql行转列、列转行

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

行转列

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

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;

       结果展示:

mysql 行转列和列转行实例详解

列转行

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

mysql 行转列和列转行实例详解

       建表语句如下:


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 行转列和列转行实例详解

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

来源:http://blog.csdn.net/jx_870915876/article/details/52403472

标签:mysql,行转列,列转行
0
投稿

猜你喜欢

  • 如何让WML页面自己更新?

    2008-05-21 13:35:00
  • MySQL中的常用树形结构设计总结

    2024-01-18 22:05:31
  • Python实现问题回答小游戏

    2023-05-13 13:26:19
  • 详解tf.device()指定tensorflow运行的GPU或CPU设备实现

    2021-03-25 19:39:27
  • Python多进程通信Queue、Pipe、Value、Array实例

    2023-04-08 03:25:55
  • python自动化测试通过日志3分钟定位bug

    2021-09-12 10:11:19
  • Python编程求质数实例代码

    2021-12-03 23:17:18
  • 浏览器tab的设计

    2008-08-11 13:03:00
  • Python import用法以及与from...import的区别

    2021-06-13 14:23:51
  • Python中SOAP项目的介绍及其在web开发中的应用

    2022-09-15 15:36:45
  • linux mysql 报错:MYSQL:The server quit without updating PID file

    2024-01-22 08:40:47
  • 使用Pycharm+PyQt5弹出子窗口的程序代码

    2022-03-09 20:15:17
  • 几个缩减MySQL以节省磁盘空间的建议

    2024-01-17 11:41:23
  • 在Pycharm中设置默认自动换行的方法

    2022-09-10 04:29:00
  • 自动化测试读写64位操作系统的注册表

    2024-05-13 09:36:32
  • 如何判断发言是否为空?

    2010-01-12 20:15:00
  • python基础之类型转换函数

    2021-06-25 02:43:27
  • 使用navicat将csv文件导入mysql

    2024-01-17 07:06:38
  • Python实现查看系统启动项功能示例

    2022-12-27 17:03:14
  • Vue Ref全家桶具体用法详解

    2024-04-27 15:49:06
  • asp之家 网络编程 m.aspxhome.com