Sql 为什么更新和插入在查询中不起作用?
我试图根据相同的id值将一列数据从一个表插入到另一个表中。我执行了以下查询,它成功运行,并显示消息中的所有行都受到影响。但当我检查表格时,它显示该列每行的空白值。因此,没有插入任何数据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 然后我尝试了更新。执行以下查询。它给出了一个错误:子查
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查询中提取的数据数不止一个