在SQL查询中使用表中的值
给定三个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"
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来完成。