简单谈谈MySQL数据透视表
作者:hebedich 时间:2024-01-25 05:42:07
我有一张这样的产品零件表:
部分
part_id part_type product_id
--------------------------------------
1 A 1
2 B 1
3 A 2
4 B 2
5 A 3
6 B 3
我想要一个返回如下表格的查询:
product_id part_A_id part_B_id
----------------------------------------
1 1 2
2 3 4
3 5 6
在实际实施中,将有数百万个产品部件
最佳答案
不幸的是,MySQL没有PIVOT功能,但您可以使用聚合函数和CASE语句对其进行建模.对于动态版本,您需要使用预准备语句:
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'max(case when part_type = ''',part_type,''' then part_id end) AS part_','_id'
)
) INTO @sql
FROM
parts;
SET @sql = CONCAT('SELECT product_id,',@sql,'
FROM parts
GROUP BY product_id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
如果您只有几列,那么您可以使用静态版本:
select product_id,max(case when part_type ='A' then part_id end) as Part_A_Id,max(case when part_type ='B' then part_id end) as Part_B_Id
from parts
group by product_id
总结
以上是脚本之家为你收集整理的MySQL动态透视全部内容,希望文章能够帮你解决MySQL动态透视所遇到的程序开发问题。
标签:MySQL,数据透视表


猜你喜欢
tensorflow获取变量维度信息
2021-01-30 01:21:41
python访问mysql数据库的实现方法(2则示例)
2024-01-23 05:58:41
使用Javascript监控前端相关数据的代码
2024-04-17 09:43:02
在Django的视图(View)外使用Session的方法
2023-06-24 02:28:32
vue3.2中的vuex使用详解
2024-05-25 15:16:58

vue.js删除动态绑定的radio的指定项
2024-05-09 09:51:48

Python利用3D引擎写一个Pong游戏
2021-09-13 15:56:58

原生JS与jQuery编写简单选项卡
2024-04-30 09:52:52
基于vuex实现购物车功能
2024-05-08 10:43:35

Python 机器学习库 NumPy入门教程
2022-09-28 23:10:41
Ubuntu安装Jupyter Notebook教程
2021-03-12 03:14:58

Dreamweaver使用技巧之如何巧用DW4文件库更新网站
2010-10-20 20:07:00

为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2024-05-10 14:09:54

mysql正确安全清空在线慢查询日志slow log的流程分享
2024-01-24 12:25:48
Python中flask框架跨域问题的解决方法
2023-10-23 11:10:52

Python实现获取操作系统版本信息方法
2021-10-19 04:14:14
python编程测试电脑开启最大线程数实例代码
2023-07-07 12:19:46

从MySQL 5.5发布看开源数据库新模式
2010-01-03 19:54:00
Python函数参数类型及排序原理总结
2021-12-29 05:12:10
Python基于当前时间批量创建文件
2022-05-26 22:46:34
