आपको एक 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
यदि संभव हो Name
मान गतिशील हैं, आप निम्न के परिणामों से उच्च स्तरीय भाषा में ऐसे 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;
ध्यान दें कि यदि बहुत सारे अलग-अलग Name
हैं मान, आपको group_concat_max_len
बढ़ाने की आवश्यकता हो सकती है कोड>
1KiB के अपने डिफ़ॉल्ट से।