我有一个包含两个字符字段的表 region_town_names,一个包含区域名称,另一个包含逗号分隔的城镇列表
region | towns
-------------------------------
regionA | townA, townB, townC
regionB | townB, townD
我还有两个表(region_id 和 town_id),每个地区/城镇都有数字 id
id | name id | name
--------------- ----------------
1 | regionA 1 | townA
2 | regionB 2 | townB
3 | townC
4 | townD
我现在正在尝试填充一个规范化的表 region_town_ids ,它应该取消嵌套城镇列表并包含区域和城镇的 ID,如下所示:
region_id | town_id
-------------------
1 | 1
1 | 2
1 | 3
2 | 2
2 | 4
我可以很容易地得到名字并将它们插入
insert into region_town_ids
select region as region_id, unnest(string_to_array(towns,', ')) as town_id
from region_town_names;
但是如何在同一语句中查找名称的 ID 并插入它们而不是名称?那可能吗?我需要一个 psql 函数吗?谢谢。