我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql行数据转为列数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql行数据转为列数据

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

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

普通查询

select id, data_time, numfrom testwhere id = 1order 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 d3from testgroup by id;

查询结果:

在这里插入图片描述

总结

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

注意点:

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

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

建表语句

-- auto-generated definitioncreate 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);

来源地址:https://blog.csdn.net/qq_44275015/article/details/131469080

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql行数据转为列数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL多列数据怎么转化为一列数据

你可以使用UNION操作符将多列数据转化为一列数据。UNION操作符可以将多个SELECT语句的结果合并为一个结果集。以下是一个示例:SELECT column1 FROM tableUNIONSELECT column2 FROM
2023-10-27

数据库多行转换为单一列

数据库存储与实际显示需求不一样时,我们得写SQL来实现数据呈现:如: 先来看看数据表: CREATE TABLE [dbo].[Expenses]( [Date] DATE, [Description] NVARCHAR(40), [Char
数据库多行转换为单一列
2021-06-02

MySQL将多行数据转换为一行数据的实现示例

目录摘要:正文:基本语法示例注意GROUP_CONCAT基本语法示例示例 1: 基本的 GROUP_CONCAT 使用示例 2: 使用 ORDER BY示例 3: 使用 SEPARATOR注意事项摘要:在mysql中,如果你想要将某个属性
MySQL将多行数据转换为一行数据的实现示例
2024-09-09

oracle数据表转换为mysql数据表

oracle数据表转换为mysql数据表,或者反过来,我们可以借助navica的工具 1.打开navicat的工具->数据传输 2.选择源数据库以及目标数据库 目标可以选择数据库也可以选择文件,目标数据库需要提前建好表,这里是选择文件,
2023-08-16

Sql Server中怎么实现行数据转为列显示

本篇内容主要讲解“Sql Server中怎么实现行数据转为列显示”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Sql Server中怎么实现行数据转为列显示”吧!场景:行数据的某列值想作为字段列
2023-06-30

php如何将序列化数据转为数组

本文小编为大家详细介绍“php如何将序列化数据转为数组”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何将序列化数据转为数组”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。转换方法:1、用“unserial
2023-06-30

mysql行列转换函数

摘要: mysql行列转换函数提供方法在行和列之间转换数据,用于数据分析和报表生成。其主要函数包括:pivot: 将行数据转换为列数据,语法:pivot ( sum(value_to_sum) for column_to_group_by
mysql行列转换函数
2024-08-01

Django把SQLite数据库转换为Mysql数据库的过程

目录1、SQLite导出数据2、mysql导入数据大部分新手刚学Django开发的时候默认用的都是SQLite数据库,上线部署的时候,大多用的却是Mysql。那么我们应该如何把数据库从SQLite迁移转换成Mysql呢?之前我们默认使用的
2023-05-15

编程热搜

目录