2017-02-24 118 views
0

我试图根据同一个“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。执行以下查询。它给了一个错误:

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 
+1

错误消息说明了这一切,您的子查询返回多个行。它还需要对更新表的引用! – jarlh

+0

从选择查询中提取的数据数量不止一个 –

回答

1

我怀疑你想这样的:

update edge_table 
    set code = d.code 
    from d_k d 
    where d.segm_id = edge_table.segm_id ; 

edge_table有火柴d_k更新现有的值。

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