Oracle
更新具有重複 id 的表,同時避免“單行子查詢返回多於一行”
我目前正在製作 SQL,它將根據我公司另一個表中的數據更新 1 個表中的數據
update table1 set column1 = (SELECT color FROM table2 Where table1.id = table2.id)
我的目標是讓
table1
’scolumn 1
包含來自 的顏色table 2
,但id
它不是唯一的,而是公司的 cvr,因此它們出現多次給我錯誤"single-row subquery returns more than one row"
。但是,重複項可以有不同的顏色,這讓我不確定如何解決這個問題,有什麼建議嗎?此外,雖然重複項可能是不同的顏色,但在 99% 的情況下它們不是,所以如果第一個是不可能的,我有辦法更新,所以所有重複項都有相同的顏色嗎?
如錯誤消息所示,該
set column1 =
子句需要單個值。聽起來您有數據模型問題,但如果您需要快速修復,可以修改您的選擇查詢以返回單個值;如果有多個與您的 where 子句匹配,則以下是唯一的color
from :table2``color
update table1 set column1 = (SELECT distinct color FROM table2 Where table1.id = table2.id and rownum = 1 )
如果我有更多時間,我會添加另一個級別以找到最常見的匹配顏色,並返回第一行。
更新子查詢以返回第一個不同的顏色 - 感謝 RDFozz 指出這一點。