简单谈谈MySQL数据透视表

 更新时间:2019年08月11日 10:38:38   投稿:hebedich  
这篇文章主要介绍了简单谈谈MySQL数据透视表的相关资料,需要的朋友可以参考下

我有一张这样的产品零件表:

部分

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误删root用户恢复方法

    mysql误删root用户恢复方法

    这篇文章主要介绍了mysql误删root用户恢复方法,本文操作是在mysql5.5版本下完成,其它版本仅作参考,需要的朋友可以参考下
    2015-02-02
  • MySQL rownumber SQL生成自增长序号使用介绍

    MySQL rownumber SQL生成自增长序号使用介绍

    MySQL 几乎模拟了 Oracle,SQL Server等商业数据库的大部分功能,函数。但很可惜,到目前的版本(5.1.33)为止,仍没有实现ROWNUM这个功能
    2011-10-10
  • 在Mac系统上配置MySQL以及Squel Pro

    在Mac系统上配置MySQL以及Squel Pro

    给大家讲述一下如何在MAC苹果系统上配置MYSQL数据库以及Squel Pro的方法。
    2017-11-11
  • mysqldump数据库备份参数详解

    mysqldump数据库备份参数详解

    这篇文章主要介绍了mysqldump数据库备份参数详解,需要的朋友可以参考下
    2014-05-05
  • mysql数据库迁移至Oracle数据库

    mysql数据库迁移至Oracle数据库

    这篇文章主要为大家详细介绍了mysql数据库迁移至Oracle数据库的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Mysql 查询患某种疾病的患者语句

    Mysql 查询患某种疾病的患者语句

    select 语句的作用是根据输入的条件返回指定的数据结果,select 的语法可以有很多种查询的组合,基本上能够满足我们所有的查询数据需求,这篇文章主要介绍了Mysql 查询患某种疾病的患者,需要的朋友可以参考下
    2022-10-10
  • MySQL高可用MMM方案安装部署分享

    MySQL高可用MMM方案安装部署分享

    这篇文章主要介绍了MySQL高可用MMM方案安装部署方法,需要的朋友可以参考下
    2014-02-02
  • Mysql中Insert into xxx on duplicate key update问题

    Mysql中Insert into xxx on duplicate key update问题

    在看代码的过程中碰到了这一用法,不太理解,google了一下。它的意义其实是如果在insert语句末尾制定了on duplicate key update语句的话,则当插入行会导致一个unique索引或者primary key中出现重复值,则执行update中的语句,否则才插入新行
    2012-08-08
  • 浅谈MySQL中使用IN会走索引吗

    浅谈MySQL中使用IN会走索引吗

    本文主要介绍了浅谈MySQL中使用IN会走索引吗,通过三个案例分析了MySQL 5.7.34版本中IN操作符的执行情况,感兴趣的可以了解一下
    2025-02-02
  • MySQL基于java实现备份表操作

    MySQL基于java实现备份表操作

    这篇文章主要介绍了MySQL基于java实现备份表操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10

最新评论