如何从一组文本创建一组记录?

How to create a set of record from a set of text?

我有这段代码 json_object_keys('{"A": 1, "B": 0, "C": 5}'::json) 其中 returns 一组文本如下:

json_object_keys
----------------
| A |
-----
| B |
-----
| C |
-----

基于这个 json_object_keys 结果,我想创建一个临时记录集或 table 来循环遍历这些以执行更新到 table 列,其中它等于每个键。 那么如何创建记录集呢?

通常你不需要显式创建一个临时的table,因为你可以使用IN (subquery)表达式,例如:

update my_table
set some_column = some_value
where key_column in (
    select json_object_keys('{"A": 1, "B": 0, "C": 5}'::json));

实际上,服务器在执行查询期间从子查询在内存中创建一个临时记录集。

但是,如果您确实需要命名的临时 table,请使用 CREATE TABLE AS:

create temporary table my_temp_table as
select json_object_keys('{"A": 1, "B": 0, "C": 5}'::json);