首页 > 解决方案 > 需要基于php中的列值分组值的mysql数据

问题描述

我有如下表模式

name   type  total
name1  type1  10
name1  type1  10
name1  type2  20
name1  type3  30
name2  type1  30
name2  type2  40
name2  type3  50
name2  type4  25

我需要输出为

name  type1 type2 type3 type4
name1 20    20     30    0
name2 30    40     50    25

我如何使用 php 和 mysql 来实现这一点。谁能帮我解决这个问题

注意:这里的 type1,type2.. 是不能硬编码的动态名称

标签: phpmysqllaravel-5

解决方案


你可以试试下面 -

SET @sql = NULL;
        SELECT
          GROUP_CONCAT(DISTINCT
            CONCAT(
              'MAX(IF(type = ''',
              type,
              ''', total, NULL)) AS ',
              type
            )
          ) INTO @sql
        FROM order_products_sizes;

        SET @sql = CONCAT('SELECT name, ', @sql, ' 
                           FROM tablename group by name');

        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;

推荐阅读