MySQL-如何透视NVP?
假设我有一个包含以下行的MySQL-如何透视NVP?,mysql,sql,pivot,Mysql,Sql,Pivot,假设我有一个包含以下行的product\u属性表: ================================================================ | product_attribute_id | product_id | name | value | ================================================================ | 1 | 25
product\u属性
表:
================================================================
| product_attribute_id | product_id | name | value |
================================================================
| 1 | 25 | Author | John Doe |
----------------------------------------------------------------
| 2 | 25 | Author | Jane Doe |
----------------------------------------------------------------
| 3 | 55 | Publisher | ABC Corp |
----------------------------------------------------------------
| 4 | 55 | Release Date | 20100125 |
----------------------------------------------------------------
我正在考虑为全文搜索实现Solr,我认为这个表可能有一些重要的信息需要索引。因此,我认为这个表需要进行数据透视(使用product\u id
作为数据透视点),这样我就可以将它与其他表结合起来,这些表中的信息应该被索引
问题:
这是一个相当标准的实现
SELECT
product_id,
GROUP_CONCAT(if(name = 'Author', value, NULL)) AS 'Author',
GROUP_CONCAT(if(name = 'Publisher', value, NULL)) AS 'Publisher',
FROM product_attribute
GROUP BY product_id;
你必须
select distinct(name) from product_attribute
因此,您可以构建上述查询
但是,不,它不能使用相同的名称,组_CONCAT将指定值
我见过一个实现,它添加一个列并用增量值填充它,这样它就可以使用变量和计数器透视表。但是我在mysql中没有这个功能,这是一个非常标准的实现
SELECT
product_id,
GROUP_CONCAT(if(name = 'Author', value, NULL)) AS 'Author',
GROUP_CONCAT(if(name = 'Publisher', value, NULL)) AS 'Publisher',
FROM product_attribute
GROUP BY product_id;
你必须
select distinct(name) from product_attribute
因此,您可以构建上述查询
但是,不,它不能使用相同的名称,组_CONCAT将指定值
我见过一个实现,它添加一个列并用增量值填充它,这样它就可以使用变量和计数器透视表。但我在mysql中没有