【发布时间】:2015-05-04 15:16:28
【问题描述】:
我有一张这样的桌子:
+--------+--------------------+
| ID | Attribute |
+--------+--------------------+
| 1 |"color" => "red" |
+--------+--------------------+
| 1 |"color" => "green" |
+--------+--------------------+
| 1 |"shape" => "square" |
+--------+--------------------+
| 2 |"color" => "blue" |
+--------+--------------------+
| 2 |"color" => "black" |
+--------+--------------------+
| 2 |"flavor" => "sweat" |
+--------+--------------------+
| 2 |"flavor" => "salty" |
+--------+--------------------+
我想运行一些 postgres 查询来获得这样的结果表:
+--------+------------------------------------------------------+
| ID | Attribute |
+--------+------------------------------------------------------+
| 1 |"color" => "red, green", "shape" => "square" |
+--------+------------------------------------------------------+
| 2 |"color" => "blue, black", "flavor" => "sweat, salty" |
+--------+------------------------------------------------------+
属性列可以是hstore或者json格式。我在hstore中写了一个例子,但是如果我们在hstore中无法实现,但是在json中,我会将列更改为json。
我知道 hstore 不支持一个键到多个值,当我尝试一些合并方法时,它只为每个键保留一个值。但是对于json,我也没有找到任何支持这样的多值合并的东西。我认为这可以通过函数将同一键的值合并到字符串/文本中并将其添加回键/值对来完成。但我坚持实施它。
注意:如果在某些函数中实现,理想情况下,任何键如颜色、形状都不应出现在函数中,因为键可以动态扩展。
有人对此有任何想法吗?任何建议或头脑风暴都可能有所帮助。谢谢!
【问题讨论】:
标签: json postgresql multimap hstore