2017-02-24 119 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中給定行有多個匹配項。這將使用任意匹配行進行更新。