MYSQL - 如何将值分成列 - concat
Posted
技术标签:
【中文标题】MYSQL - 如何将值分成列 - concat【英文标题】:MYSQL - How to seperate values into columns - concat 【发布时间】:2014-11-25 02:05:10 【问题描述】:目前我在 phpmyadmin 中输入了以下 mysql 代码:
select Product_ID, group_concat(`Name` separator ',') as `Spec`
from
(
select Product_ID, concat(`Name`, ':',
group_concat(`Value` separator ',')) as `Name`
from product_spec_list
group by Product_ID, `Name`
) tbl
group by Product_ID
产生:
ID Name
3 Shielded:0,Type:General Purpose
4 Shielded:0,Type:General Purpose
等等。带有一长串产品 ID,其名称和值由 : 和 , 分隔。
如何将值分成以“名称”命名的列?
例如
ID Shielded Type
3 0 General Purpose
4 0 General Purpose
大约有 40 种不同的值名称。
感谢您的帮助
【问题讨论】:
谷歌:“mysql pivot”或“mysql dynamic pivot”。如果您不知道列的名称,则需要动态透视。 【参考方案1】:我还没有测试过,但我在想这样的事情:
SELECT Product_ID AS `ID`
, GROUP_CONCAT(IF(Name="Shielded", values, "") SEPARATOR "") AS `Shielded`
, GROUP_CONCAT(IF(Name="Type", values, "") SEPARATOR "") AS `Type`
FROM
(SELECT Product_ID, Name, GROUP_CONCAT(value SEPARATOR ',') AS values
FROM product_spec_list
GROUP BY Product_ID, Name
) AS subQ
GROUP BY Product_ID;
【讨论】:
以上是关于MYSQL - 如何将值分成列 - concat的主要内容,如果未能解决你的问题,请参考以下文章