今天用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...