需要在php中使用基于列值的分组值的mysql数据

w8biq8rn  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(490)

我有如下表模式

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实现这一点。有人能帮我解决这个问题吗
注:这里是类型1,类型2。。是不能硬编码的动态名称

ymdaylpp

ymdaylpp1#

你可以试试下面-

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;
2hh7jdfx

2hh7jdfx2#

尝试:

select name, if(type='type1', sum(type),0) as type1, 
if(type='type2', sum(type),0) as type2 .................... from table_name group by name

相关问题