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

时间:2017-02-24 12:37:38

标签: 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 

然后我尝试了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 个答案:

答案 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中的给定行有多个匹配项。这将使用任意匹配行进行更新。