Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将一个表中的数据作为PostgreSQL数组插入到另一个表中?_Sql_Postgresql - Fatal编程技术网

如何将一个表中的数据作为PostgreSQL数组插入到另一个表中?

如何将一个表中的数据作为PostgreSQL数组插入到另一个表中?,sql,postgresql,Sql,Postgresql,我有以下表格: 创建表“用户”( id integer默认nextval(“'User\u id\u seq'::regclass)主键, 名称文本不为空默认值“”::文本, coinflips布尔值[] ); 创建表“用户复制”( “nodeId”整数, 位置整数, 布尔值, id integer默认nextval(“'User\u coinflips\u COPY\u id\u seq'::regclass)主键 ); 我不想寻找SQL语句,它从User\u coinflips中的每一行中

我有以下表格:

创建表“用户”(
id integer默认nextval(“'User\u id\u seq'::regclass)主键,
名称文本不为空默认值“”::文本,
coinflips布尔值[]
);
创建表“用户复制”(
“nodeId”整数,
位置整数,
布尔值,
id integer默认nextval(“'User\u coinflips\u COPY\u id\u seq'::regclass)主键
);
我不想寻找SQL语句,它从
User\u coinflips
中的每一行中获取
条目,并将其作为插入
User
上的
coinflips
列中

任何帮助都将不胜感激

更新

不确定这是否重要,但我刚刚意识到上面的表定义中有一个小错误,我将
User\u coinflips
替换为
User\u coinflips\u COPY
,因为这准确地描述了我的模式。只是为了上下文,在它看起来像这样之前:

创建表“User\u coinflips”(
“nodeId”整数在删除级联上引用“User”(id),
位置整数,
布尔值不为空,
约束“User_coinflips_pkey”主键(“nodeId”,位置)
);

您正在查找更新,而不是插入

在UPDATE语句中使用具有要联接的聚合值的派生表:

update "User"
  set conflips = t.flips
from (
   select "nodeId", array_agg(value order by position) as flips
   from "User_coinflips"
   group by "nodeId"
) t
where t."nodeId" = "User"."nodeId";

与您的问题无关,但是:您应该真正避免那些可怕的引用标识符。他们的麻烦远比他们值得的多。哈,谢谢,我真的不知道这个大会!(在本例中,我使用的是自动生成的模式,因此无法影响列名)。