在我的 Postgres 数据库中,我天真地在表
Foos
中创建了一列作为 json[]
,如下所示:
TABLE Foos
id | ... | baas
--------------------------------
1 | ... | [
| ... | {
| ... | "name": "a",
| ... | "property": "1",
| ... | },
| ... | {
| ... | "name": "b",
| ... | "property": "2",
| ... | },
| ... | ...
| ... | ]
2 | ... | [ ... ]
3 | ... | [ ... ]
现在我想用 json 数组中的项目填充表
Baas
,如下所示:
TABLE Baas
id | foo_id | name | property
------------------------------
1 | 1 | a | 1
2 | 1 | b | 2
如何用简单的 SQL 来做到这一点?
我自己解决了:
INSERT INTO public.baas (foo_id, name, property)
SELECT
foo_id,
array_element ->> 'name',
(array_element ->> 'property')::integer
FROM (
SELECT
id as foo_id,
unnest(baas) AS array_element
FROM
public.foos
) AS subquery_alias;