如何将具有逗号分隔数组的列中的值替换为另一个表中的值?

时间:2017-11-10 11:19:47

标签: sql amazon-redshift

我有两张表,如:

表1:

       segment          |            value
------------------------+----------------------------------------
 aaa                    | Eateries
 bbb                    | Car Accessories
 ccc                    | Healthcare
 ddd                    | Electronics

表2:

       idx               |            segmentids
-------------------------+----------------------------------------
 f9b6d54b-c646-4bbb-b0ec |         [aaa,bbb,ccc,ddd]
 asd7a0s9-c646-asd7-b0ec |         [aaa,bbb]
 gd3355ff-cjr8-assa-fke0 |         [aaa,ddd]
 laksnfo3-kgi5-fke0-b0ec |         [ddd]

如何替换表2中的segmentid值,如下所示:

       idx               |            segmentids
-------------------------+----------------------------------------
 f9b6d54b-c646-4bbb-b0ec | [Eateries,Car Accessories,Healthcare,Electronics]
 asd7a0s9-c646-asd7-b0ec | [Eateries,Car Accessories]
 gd3355ff-cjr8-assa-fke0 | [Eateries,Electronics]
 laksnfo3-kgi5-fke0-b0ec | [Electronics]

我尝试使用java代码替换后端的值,但速度非常慢。

1 个答案:

答案 0 :(得分:1)

使用横向连接和split_string可以使用PostgreSQL 9.3或更高版本,但红移不支持横向连接。

不幸的是,规范化是我在这里看到的唯一有用且有效的方法。

如果我做了一个错误的假设请发表评论,我会重新调整我的答案。