Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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
Sql 为什么更新和插入在查询中不起作用?_Sql_Postgresql - Fatal编程技术网

Sql 为什么更新和插入在查询中不起作用?

Sql 为什么更新和插入在查询中不起作用?,sql,postgresql,Sql,Postgresql,我试图根据相同的id值将一列数据从一个表插入到另一个表中。我执行了以下查询,它成功运行,并显示消息中的所有行都受到影响。但当我检查表格时,它显示该列每行的空白值。因此,没有插入任何数据 insert into edge_table (code) select d.code as code from d_k as d inner join edge_table as edge on d.segm_id = edge.segm_id 然后我尝试了更新。执行以下查询。它给出了一个错误:子查

我试图根据相同的id值将一列数据从一个表插入到另一个表中。我执行了以下查询,它成功运行,并显示消息中的所有行都受到影响。但当我检查表格时,它显示该列每行的空白值。因此,没有插入任何数据

insert into edge_table (code)
    select d.code as code from d_k as d inner join edge_table as edge on d.segm_id = edge.segm_id 
然后我尝试了更新。执行以下查询。它给出了一个错误:子查询作为表达式返回多行

update edge_table set (code) = 
    (select d.code as code from d_k as d inner join edge_table as edge on d.segm_id = edge.segm_id)
但当我尝试仅选择时,效果很好

select d.code as code from d_k as d inner join edge_table as edge on d.segm_id = edge.segm_id 

我怀疑你想要这个:

update edge_table 
    set code = d.code
    from d_k d
    where d.segm_id = edge_table.segm_id ;
这将更新edge_表中在d_k中具有匹配项的现有值


注意:数据中有一个问题,因为edge_表中给定行有多个匹配项。这将使用任意匹配行进行更新。

错误消息说明了一切,您的子查询将返回多行。它还需要对更新表的引用!从select查询中提取的数据数不止一个