php - 需要基于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.. 是不能硬编码的动态名称
解决方案
你可以试试下面 -
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;
推荐阅读
- php - 登录尝试修改与另一列
- php - 内部 orderBy 被 Laravel Eloquent 中的外部 orderBy 覆盖
- python - Python中的NameError处理
- rest - 能否从 Azure DevOps REST API 获取项目开始日期?
- c - 将拆分后的字符串存储在数组中
- javascript - 根据字符串内容中的@number 对字符串数组进行排序
- python - 随机递增数
- javascript - 如何使用js动态更改元素id
- python - 将 numpy 列表数组转换和修剪为 numpy 数组 numpy 数组问题
- android - 按照 Mapbox 初学者教程返回“清单合并失败”错误