mysql行数据转为列数据

news/2025/2/23 2:43:12/

最近在开发过程中遇到问题,需要将数据库中一张表信息进行行转列操作,再将每列(即每个字段)作为与其他表进行联表查询的字段进行显示。

借此机会,在网上查阅了相关方法,现总结出一种比较简单易懂的方法备用。

普通查询

select id, data_time, num
from test
where id = 1
order by data_time;

运行结果:
在这里插入图片描述

行数据转为列数据

当我们想把id为1的数据按照时间排列在一行,那么这时候就需要用到group by了,当然了,这里用的函数不一定是sum

select id,sum(if(date_format(DATA_TIME, '%H:%i') = '11:23', num, null)) as d1, sum(if(date_format(DATA_TIME, '%H:%i') = '11:24', num, null)) as d2, sum(if(date_format(DATA_TIME, '%H:%i') = '11:25', num, null)) as d3
from test
group by id;

查询结果:

在这里插入图片描述

总结

可以看出,这里行转列是将原来的data_time字段的多行内容选出来,作为结果集中的不同列,并根据id进行分组显示对应的num;

注意点:

1.SUM()是为了能够使用GROUP BY根据id进行分组,因为每一个id对应的data_time=‘某个时间’ 的记录只有一条,所以SUM()的值就等于对应那一条记录的num的值。

假如id=1 和data_time=‘某个时间’ 的记录有两条,则此时SUM()的值将会是这两条记录的和,同理,使用Max()的值将会是这两条记录里面值最大的一个。但是正常情况下,一个id对应一个时间段下的数据只有一个,因此可以使用SUM()、MAX()、MIN()、AVG()等聚合函数都可以达到行转列的效果。

建表语句

-- auto-generated definition
create table test
(id        int      not null,data_time datetime not null,num       int      null
);

数据语句

INSERT INTO `test`(`id`, `data_time`, `num`) VALUES (1, '2023-06-20 11:24:00', 1);
INSERT INTO `test`(`id`, `data_time`, `num`) VALUES (1, '2023-06-20 11:25:00', 54);
INSERT INTO `test`(`id`, `data_time`, `num`) VALUES (1, '2023-06-20 11:23:00', 5234);

http://www.ppmy.cn/news/665036.html

相关文章

Java 实现word、excel、ppt、txt等办公文件在线预览功能!

如何用 Java 实现word、excel、ppt、txt等办公文件在线预览功能?本文告诉你答案! java 实现办公文件在线预览功能是一个大家在工作中也许会遇到的需求,网上些公司专门提供这样的服务,不过需要收费。 如果想要免费的,…

3d打印服务模型定制工业级手板高精度

宜昌3d打印服务模型定制工业级手板高精度   3d的时代确实一个奇妙的世界,带给众人不一般的惊喜,从而生活都发生了变化,那么3d打印究竟有何等的神秘奇妙,带给人们挖掘一个一个的惊喜,就像冒险家探究挖掘宝物过程中少不…

国内工业级3D打印机品牌的应用领域拓展

根据最新的《中国3D打印机市场半年度追踪报告》显示,近五年中国工业级3D打印机出货量和销售额均持续增长,2019年出货量同比增长5.1%,销售额同比增长9.3%。 由于工业级产品的利润空间较大,很多3D打印服务商持续地进行工业级3D打印机的升级迭代,以应对不断扩展的应用领域和工业级…

产品的分类(民用商用级、工业级、汽车电子级、军工级)

民用级 工业级 汽车级 军工级 工作温度范围 0-70℃ -40-85℃ -40-125℃ -55-125℃ 电路设计 防雷设计 短路、热保护等 多级防雷设计 双变压器设计 抗干扰技术 短路、热保护、超高压保护等 多级防雷设计 双变压器设计 抗干扰技术 多重短路、多重热保护、超高压保护等…

辰视工业级3D视觉·汽车主机厂焊装车间在线测量应用案例

辰视工业级3D视觉线测量方案,采用了高精度结构光3D相机,通过一次拍摄多个特征方式,准确测量特征在车身坐标系下的位置,实时检测车身生产过程种的位置尺寸变化情况,从而实现全检测来提升生产质量。 汽车焊装车间在线测量…

3D打印品牌的切入,能为传统齿科企业数字化升级提供什么帮助?

现如今,3D打印在齿科种植、正畸、修复等领域的应用越来越多,具体变化有以下几点: 变化1:3D打印品牌数字化解决方案,帮助技工厂完善数字化生产链条 以黑格科技为例,黑格科技为传统齿科企业提供以应用为导向…

航天增材制造迎来新入局者,可3D打印9米超大尺寸零件

聚焦于航空航天工业增材制造,本行业迎来了新的入局者——Rosotics,该公司已经与NASA展开了合作,推出了一款能够制造直径达30英尺(约9.1米)大型组件的金属3D打印机。 Rosotics的Mantis打印机可为航空航天制造大型零件 R…