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

发布时间 - 2026-01-11 00:18:52    点击率:

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行转列与列转行的实现代码  # mysql 行列动态转换的实现(列联表  # 交叉表)  # mysql 列转行的技巧(分享)  # mysql 列转行  # 合并字段的方法(必看)  # MySQL 中行转列的方法  # 一文弄懂MYSQL如何列转行  # MySQL实现行列转换  # mysql列转行方法超详细讲解  # 搞定mysql行转列的7种方法以及列转行  # MySQL中实现行列转换的操作示例  # MySQL动态列转行的实现示例  # 英语  # 李四  # 王五  # 一句  # 如图所示  # 设为  # 希望能  # 不做  # 谢谢大家  # 往外  # 转成  # 是为了  # 无数据  # ID  # TEST_TB_GRADE  # SCORE  # DEFAULT  # NULL  # AUTO_INCREMENT  # USER_NAME 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: jQuery validate插件功能与用法详解  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  如何在阿里云ECS服务器部署织梦CMS网站?  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  Laravel如何发送系统通知?(Notification渠道示例)  利用 Google AI 进行 YouTube 视频 SEO 描述优化  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel如何使用withoutEvents方法临时禁用模型事件  个人网站制作流程图片大全,个人网站如何注销?  企业网站制作这些问题要关注  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  如何快速搭建虚拟主机网站?新手必看指南  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  如何将凡科建站内容保存为本地文件?  如何快速启动建站代理加盟业务?  Laravel如何创建自定义Facades?(详细步骤)  高端建站三要素:定制模板、企业官网与响应式设计优化  高端建站如何打造兼具美学与转化的品牌官网?  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何用y主机助手快速搭建网站?  nginx修改上传文件大小限制的方法  微信公众帐号开发教程之图文消息全攻略  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  ,怎么在广州志愿者网站注册?  Laravel如何使用Eloquent进行子查询  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  HTML 中如何正确使用模板变量为元素的 name 属性赋值  详解CentOS6.5 安装 MySQL5.1.71的方法  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  如何快速上传建站程序避免常见错误?  Python高阶函数应用_函数作为参数说明【指导】  常州企业网站制作公司,全国继续教育网怎么登录?  js实现点击每个li节点,都弹出其文本值及修改  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何在七牛云存储上搭建网站并设置自定义域名?  如何在局域网内绑定自建网站域名?  如何获取免费开源的自助建站系统源码?  Laravel如何实现API资源集合?(Resource Collection教程)  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  EditPlus中的正则表达式 实战(4)