嗨,大家好,我有這樣的問題,關於oracle上的相關更新。ORACLE SQL:相關的更新問題
考慮我有一個表params。
id_s id_p value desc
-----------------------------------------------
10064 9 aaa r
10064 8 bbb t
10064 4 ccc t
10064 4 ttt y
11119 9 ddd f
11119 8 eee g
11119 4 fff b
11119 4 kkk x
,所以我想更新PARAMS得到以下
id_s id_p value desc
-----------------------------------------------
10064 9 aaa r
10064 8 bbb t
10064 4 ccc t
10064 4 ttt y
11119 9 aaa r
11119 8 bbb t
11119 4 ccc t
11119 4 ttt y
我寫更新這樣
update params p1
set (p1.value, p1.desc) = (
select p2.value
, p2.desc
from params p2
where p2.id_s = 10064
and p2.id_p = p1.id_p
)
where p1.id_s = 11119
;
執行返回錯誤「ORA01427:單行子查詢返回更多比一排'
我該如何做到這一點日期工作?
您的查詢應該是罰款 - 你運行帶有'p1.id_p'子查詢一些自己的價值觀所取代? – collapsar
@collapsar是的,我試過了。如果只有一個值而不是p1.id_p,則更新將起作用,但是當p1.id_p有多個值時,則會返回錯誤「ORA01427:單行子查詢返回多行」。 – arminrock
如何確定哪些主記錄和從記錄符合您的快速條件?例如。對於'id_p' = 4你有2! = 2個將id_s' = 10064與id_s' = 11119的記錄相關聯的選項。請注意,如果選擇相關並不重要,則必須確保源和目標集的基數相同。還要注意,這種不變性通常是數據模型破壞的標誌。 – collapsar