我已经在这里阅读了 artfulsoftware 和许多主题,但仍然无法弄清楚为什么我不能让它工作。
我有一个非常简单的表(productProperties pp),包含三列:
prodName propName propValue
我想查询所以它会被表示为(例如)
prodName Color Weight Adhesive
nail1 black 1lbs 3m
nail2 silver 0.5lbs 3m
我试过的:
select
pp.prodName,
CASE pp.propName
WHEN 'Color' THEN pp.propValue
ELSE NULL
END as 'Color',
CASE pp.propName
WHEN 'Weight' THEN pp.propValue
ELSE NULL
END as 'Weight',
CASE pp.propName
WHEN 'Adhesive' THEN pp.propValue
ELSE NULL
END as 'Adhesive'
from
ProductsProperties as pp
group by pp.prodName;
除了 prodName 之外,我还获得了所有 NULL
例如:
prodName propName propValue
nail1 Color black
nail1 Adhesive 3M
nail2 Weight 1lbs
nail3 Color black
nail3 Adhesive 3M
nail5 Weight 1lbs
以上查询结果为:
prodName, Color, Weight, Adhesive
nail1, black, NULL, NULL
nail2, NULL, 1lbs, NULL
nail3, black, NULL, NULL
nail5, NULL, 1lbs, NULL
最佳答案
您需要将 CASE 包装到 GROUP_CONCAT()
中:
SELECT
pp.prodName,
GROUP_CONCAT(DISTINCT CASE pp.propName
WHEN 'Color' THEN pp.propValue
ELSE NULL
END) AS'Color',
GROUP_CONCAT(DISTINCT CASE pp.propName
WHEN 'Weight' THEN pp.propValue
ELSE NULL
END) AS 'Weight',
GROUP_CONCAT(DISTINCT CASE pp.propName
WHEN 'Adhesive' THEN pp.propValue
ELSE NULL
END) AS 'Adhesive'
FROM
ProductsProperties AS pp
GROUP BY pp.prodName;
关于mysql - 旋转 mysql 表不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31611014/