在SQL查询中使用表中的值

在SQL查询中使用表中的值,sql,json,postgresql,Sql,Json,Postgresql,给定三个SQL表, PEOPLE列-name(varchar)、age(integer) INFO带列-email(varchar)、phone(varchar) 和master_表as- ID | TABLENAME | RECORD --- | -------------- | ------------------------------------------------------------------ 1 | PEOPLE | "{"name"

给定三个SQL表,
PEOPLE
列-
name
(varchar)、
age
(integer)
INFO
带列-
email
(varchar)、
phone
(varchar)
master_表
as-

ID  |  TABLENAME     | RECORD  
--- | -------------- | ------------------------------------------------------------------  
1   |      PEOPLE    | "{"name": "Mary", "age": 12}"  
2   |      INFO      | "{"email": "xyz@abc.com", "phone": "321-456"}"  
现在,我希望编写一个查询,将数据从
master_表
加载到相应的表中。关于以下内容:

INSERT INTO @TABLENAME VALUES @RECORD AS JSON 'AUTO'  
其中,
@TABLENAME
是说,
从主表中选择TABLENAME,其中ID=1

@RECORD
从主表中选择记录,其中ID=1

如何才能做到这一点?

类似这样的事情:

insert into people (name, age)
select record::json ->> 'name', (record::json ->> 'age')::int
from master_table
where tablename = 'PEOPLE';

insert into info (email, phone)
select record::json ->> 'email', record::json ->> 'phone'
from master_table
where tablename = 'INFO';

谢谢你的回答!然而,我的用例要求我抽象到master_表中的数据,即我不知道TABLENAME列中可能存在哪些表名,在这种情况下,in不能使用
其中TABLENAME='PEOPLE'
其中tablename='INFO'
我需要从表中提取它,并在查询中使用它,并假设这些表存在于数据库中,JSON键与列匹配names@C.Thullu:然后需要动态SQL和存储函数。这不能用“静态”SQL来完成。