Bạn cần thực hiện PIVOT
hoạt động này không được hỗ trợ nguyên bản trong MySQL (không giống như một số RDBMS khác).
Cách gần nhất bạn có thể làm là xây dựng SQL theo các dòng sau:
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
Nếu có thể Tên
các giá trị là động, bạn có thể tạo SQL như vậy bằng ngôn ngữ cấp cao hơn từ kết quả của:
SELECT DISTINCT Name FROM search_export
Thật vậy, người ta thậm chí có thể sử dụng chính 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;
Lưu ý rằng nếu có nhiều Tên
khác nhau , bạn có thể cần tăng group_concat_max_len
từ mặc định là 1KiB.