對於oracle兩表關聯更新的問題解決辦法

2022-05-09 09:00:12 字數 948 閱讀 7786

昨天測程式的時候在oracle兩表關聯更新的時候發現了錯誤single-row subquery returns more than one row,這個錯誤在網上有很多解決辦法,現在將語句貼出來,大家看看:

1update

map_5065 a 

seta.butxt =2

(select

c.butxt 

from

erp_0011 c 

where

c.bukrs

=a.bukrs) 

3where

exists

(select

*from

erp_0011 d 

where

a.bukrs

=d.bukrs);

4目前這個錯誤意思是索要一行的值結果返回了多行,這個在oracle中是不支援的,在sybase資料庫中支援,現在是要限制後面子查詢返回的記錄條數,哦在網上找了很多的資料,試了各種辦法,但是對於這種更新表與關聯表是一對多的方式在我這兒測試都不行,問了乙個傳說中也是現實中的高手,將語句修改如下:

update

map_5065 a 

seta.butxt =(

select

max(c.butxt) 

from

erp_0011 c 

where

c.bukrs

=a.bukrs) 

where

exists

(select

*from

erp_0011 d 

where

a.bukrs

=d.bukrs);

這樣執行是沒有問題的,程式測試成功,我對oracle資料庫的遍歷機理不是很了解,所以在解決問題的時候只是單純的找解決方法,而沒有從原理上入手,希望oracle高手可以跟一下,講解一下oracle的這種用法的原理

oracle關聯表更新

如果有a表和b表,sql server中用 update a set field2 b.filed2 from a,b where a.field1 b.field1搞定,所以用慣了sql server的更新表語句,再用oracle的那真是特別的拗口。情景一 如果只是更新固定值,oracle和sql...

oracle兩表關聯更新方法

建立兩張測試表 create table table1 id varchar2 10 val varchar2 20 create table table2 id varchar2 10 val varchar2 20 分別給兩張測試表插入測試資料 insert into table1 values...

oracle兩關聯表的批量更新操作

批量更新,普通的方法有update,而對於大資料的批量更新顯然是不行的,下面介紹一種批量更新的方法,而且執行效率很高。首先建兩個表,test1和test2,test1比test2少了乙個字段,要求將test1的字段資料更新到test2中去,此時test1的資料量超過6萬行,通過以下 不到一秒鐘,就完...