本節(jié)內(nèi)容小編要和大家分享的是Oracle數(shù)據(jù)庫更新(pdf格式免費(fèi)版教程),想進(jìn)行oracle學(xué)習(xí),了解oracle數(shù)據(jù)庫更新語句的小伙伴可以進(jìn)行下載查閱哦!
溫馨提示:
本文檔為PDF格式文檔,因此需確保在閱讀之前你已經(jīng)安裝了PDF閱讀器,如果尚未安裝閱讀器,建議下載福昕PDF閱讀器或其他PDF閱讀器,進(jìn)行安裝后閱讀。
東坡學(xué)堂
Oracle數(shù)據(jù)庫更新常見問題及解答
oracle數(shù)據(jù)庫update語句的疑問——案例如下:
我在表A中的數(shù)據(jù)如下
name cou1 cou2 cou3 cou4
na1 1 null null null
na2 2 null null null
現(xiàn)在我需要從表B中想表A中更新數(shù)據(jù),使用select語句從B中返回的結(jié)果集為
B_name B_cou1
na1 2
na2 3
我怎么才能使這個(gè)能夠得到正確的添加?
我原來的語句是
update A set cou2=(select B_cou1 from B where(條件1)) where name=(select B_name from B where(條件1))
報(bào)錯(cuò) 返回值不止一行,求解應(yīng)該怎么寫SQL才能使得B中數(shù)據(jù)和正確更新到B中數(shù)據(jù)?
解答:
你的語句太混亂了,按照你的意思你需要明確幾點(diǎn)。
1、使用b表數(shù)據(jù)更新a表,那么where條件是什么,也就是說,更新a表中哪些數(shù)據(jù),用b表中的哪些數(shù)據(jù)更新,二者的關(guān)系是什么。從你的語句中我看不出b表和a表的關(guān)聯(lián)。
2、找到關(guān)聯(lián)條件后,通過關(guān)聯(lián)條件查出的b表數(shù)據(jù)是否唯一,如果不唯一,還是會(huì)出現(xiàn)“返回值多于一行”的錯(cuò)誤。
按照你的表結(jié)構(gòu)和數(shù)據(jù),假設(shè)A表和B表中的name列唯一,以name作為關(guān)聯(lián),可以這樣寫來實(shí)現(xiàn)你的更新目的:
update A set cou2 = (select B_cou1 from B where B.B_name = A.name) where name in (select B_name from B where B.B_name = A.name)
這條語句必須滿足name在a、b表中唯一的條件,才能使用。
以上問答僅供參考!
更多教程資料下載,敬請關(guān)注東坡下載站!
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版