我已經在表中創建了一列,從中我想用其他select語句檢索的數據填充表。無法使用select語句更新表中的行
這是我試圖用它來填充一個列聲明:當我運行該語句在Oracle中它顯示了這個錯誤
update cc_file
set sd_file_name = (select c1.name sd_file_name
from cc_file f, cvs3 c1
where f.sd_file_id = c1.file_id
and (c1.file_id, c1.type) in (select file_id,
max(type)
from cvs3
where type1='PP'
and type2='XHMTML'
group by file_id)
ORA-01427: single-row subquery returns more than one row
請有人可以讓我知道我是怎麼可以做到這一點,以便更新列。
感謝
選擇c1.name sd_file_name有一些問題,你有沒有'任何表c1'對象請檢查 – Jalpesh 2012-07-12 10:09:07
的問題是,你的SELECT語句返回多個行,但在這樣的任務中只能有一個值。您需要修復select語句,以便它返回您想要使用的一個文件名。 另外,這種形式的update語句會將xml_file_name設置爲表中所有行的相同值,是您想要的嗎?我懷疑你真正想要的是爲每行獲取與其現有的xml_file_id對應的xml_file_name,是嗎? – Barmar 2012-07-12 10:10:30
我已經更新了c1對象。是的@Barmar你是對的,這是我正在嘗試做的。謝謝 – Sam 2012-07-12 10:14:06