gpt4 book ai didi

MySQL - 如何转向 NVP?

转载 作者:行者123 更新时间:2023-11-29 03:45:38 26 4
gpt4 key购买 nike

假设我有一个包含以下行的 product_attribute 表:

================================================================
| 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_id 作为透视点),这样我就可以将它与其他包含应编制索引的信息的表结合起来。

问题:

  1. 如何在 MySQL 中转换它?
  2. 我事先不知道所有的名称/值对是什么。这会成为问题吗?
  3. 一些属性具有相同的名称(例如上例中的“作者”)。这会成为问题吗?

最佳答案

这是一个非常标准的实现

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

所以你可以构建上面的查询但不,它不能使用相同的名称,GROUP_CONCAT 将连接值。

我见过一个实现,它添加一个列并用增量值填充它,这样它就可以使用变量和计数器来旋转表。但我在 mysql 中没有这个

关于MySQL - 如何转向 NVP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5943678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com