db2 update注意的問題

2021-07-30 17:58:16 字數 620 閱讀 2690

今天用db2 update 多條記錄,用到了下面的形式

update b   set   (clientname)    =   (select name from a where b.id = a.id)

報了-811的錯誤。這裡要注意的是

b.id = a.id當a找不到記錄的id滿足這個條件時,返回的是null,即會把b的id在a找不到對應id的記錄set為null,如果不能set為null的話就要加過where條件過濾

b.id = a.id當在a找到多條記錄是,就會報錯-811,這是可以用fetch first 1 rows only去掉報錯,但這是要注意這個update的結果可能不符合業務要求。因為在

a找到多條記錄,證明了name 可能有多個,這時只是隨機的拿了乙個name 

db2 oracle 的語法是update set columnj=(select) where

sql server sybase的語法是update a set a.column=b.column from a,b where  (還可以是a連線b的形式,如a inner join b on a.id=b.id)

還有一種特別少見的update的語法是 update (select) set column=

db2v8 update巢狀子查詢的問題

最近在作專案中發現了乙個問題,以前對update了解不深,特將此問題總結如下 資料庫db2v8,隔離級別cs 在測試update語句的時候發現 update a set a 1 where a 2 update a set a 1 where a in select a from a where a...

DB2程式設計效能注意

2.1 大資料的導表 應該是export後再load效能更好,因為load不寫日誌。比select into 要好。2.2 sql語句盡量寫複雜sql 盡量使用大的複雜的sql語句,將多而簡單的語句組合成大的sql語句對效能會有所改善。db2的sql engieer對複雜語句的優化能力比較強,基本上...

在建DB塊時候應該注意的問題

1.字,雙字等這些佔位大於位元組的位址只能以偶數開始。2.建立陣列的時候 如上圖所示,雖然陣列是字,按照常理來說應該以位址15開始。但實際中是以16開始的,即陣列也只能以偶數開始。該陣列一共128個,到143結束。下乙個byte以144開始正常 這張圖里,陣列一共127個,以16開始,正常應該以14...