3
我有两个字符字段的表region_town_names转换名归的数字标识符的名称和串,一个包括区的名字,其他的用逗号分隔的城镇名单的Postgres 8.4.3:如何使用UNNEST
region | towns
-------------------------------
regionA | townA, townB, townC
regionB | townB, townD
我也有两个表(REGION_ID和town_id)与每个区域/镇的数字标识符
id | name id | name
--------------- ----------------
1 | regionA 1 | townA
2 | regionB 2 | townB
3 | townC
4 | townD
现在我试图填补这应该UNNEST镇名单的标准化表格region_town_ids和包含的ID像这样的地区和城镇:
region_id | town_id
-------------------
1 | 1
1 | 2
1 | 3
2 | 2
2 | 4
我能esaily得到的名称和与
insert into region_town_ids
select region as region_id, unnest(string_to_array(towns,', ')) as town_id
from region_town_names;
插入他们,但我怎么能查找名字的ID在同一语句并插入他们,而不是名字?那可能吗?我需要一个psql函数吗?谢谢。
非常感谢您!我知道这个例子中两个地区的重复城镇看起来很奇怪,但实际上我使用的是不同类型的数据,这种重复是很常见的,地区/城镇只是作为例子。不幸的是,数据库的结构是固定的,所以我不能改变它。 – Guit 2013-02-22 07:48:02