Трябва да извършите PIVOT
операция, която не се поддържа първоначално в MySQL (за разлика от някои други RDBMS).
Най-близкото, до което можете да стигнете, е да конструирате SQL по следните редове:
SELECT ProductId,
GROUP_CONCAT(IF(Name='Brand Name' ,value,NULL))
AS `Brand Name`,
GROUP_CONCAT(IF(Name='Ethernet Technology' ,value,NULL))
AS `Ethernet Technology`,
GROUP_CONCAT(IF(Name='Form Factor' ,value,NULL))
AS `Form Factor`,
GROUP_CONCAT(IF(Name='Media Type Supported',value,NULL))
AS `Media Type Supported`
FROM search_export
GROUP BY ProductId
Ако е възможно Име
стойностите са динамични, можете да генерирате такъв SQL на език от по-високо ниво от резултатите от:
SELECT DISTINCT Name FROM search_export
Всъщност човек може дори да използва самия SQL:
SELECT CONCAT('
SELECT ProductId, ',
GROUP_CONCAT('
GROUP_CONCAT(IF(Name=',QUOTE(Name),',value,NULL))
AS `',REPLACE(Name,'`','``'),'`'
), '
FROM search_export
GROUP BY ProductId
')
INTO @sql
FROM (
SELECT DISTINCT Name FROM search_export
) t;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Имайте предвид, че ако има много различни Име
стойности, може да се наложи да увеличите group_concat_max_lenкод>
от неговото подразбиране от 1KiB.