如何将记录的值设置为mysql上字段的标题?

如何将记录的值设置为mysql上字段的标题?,mysql,sql,join,Mysql,Sql,Join,我的问题是这样的: SELECT a.number, a.description, b.attribute_code, b.attribute_value FROM items a JOIN attr_maps b ON b.number = a.number WHERE a.number = AB123 如果执行查询,结果如下所示: 我想得出这样的结果: SELECT a.number, a.description, b.attribute_code, b.attribute_value

我的问题是这样的:

SELECT a.number, a.description, b.attribute_code, b.attribute_value 
FROM items a 
JOIN attr_maps b ON b.number = a.number WHERE a.number = AB123
如果执行查询,结果如下所示:

我想得出这样的结果:

SELECT a.number, a.description, b.attribute_code, b.attribute_value 
FROM items a 
JOIN attr_maps b ON b.number = a.number WHERE a.number = AB123

如何操作?

您可以使用条件聚合:

SELECT i.number, i.description,
       MAX(CASE WHEN am.attribute_code = 'brand' then am.attribute_value END) as brand,
       MAX(CASE WHEN am.attribute_code = 'model' then am.attribute_value END) as model,
       MAX(CASE WHEN am.attribute_code = 'category' then am.attribute_value END) as category,
       MAX(CASE WHEN am.attribute_code = 'subcategory' then am.attribute_value END) as subcategory
FROM items i JOIN
     attr_maps am
     ON am.number = i.number
WHERE i.number = AB123
GROUP BY i.number, i.description

伟大的它起作用了。非常感谢,我怎样才能按品牌、型号、类别或子类别进行筛选。我尝试添加WHERE brand='honda',存在如下错误:1054-WHERE子句@SuccessMan中的未知列'brand'。你可以使用having子句。拥有品牌=‘本田’。