update table_name set col_name=? where col_name=?;
例如:update table1 set name=『小三』 where id=11;
update (select......) set col_name=?;
注:只是將 標準語法中確定的表變成了 通過select 語句查詢到的乙個臨時檢視
merge into table_name a
using(table|view|sub_query) b
on(連線條件 a.col=b.col.....)
when matched then
update a set col1=?
when not matched then
insert(col.....) values(?.....);
begin
for cr in (查詢語句) loop --迴圈
--更新語句
end loop; --結束迴圈
end;
oracle 支援快速游標:不需要定義直接把游標寫道for迴圈中
例子:begin
for cr in (select a.rowid,b.join_staate from
t_join_situation a,t_people_info b
where a.people_number=b.people_number
and a.year='2011' and a.city_number='m0000' and a.town_number='m1500') loop
update t_join_situation set join_state=cr.join_state where rowid=cr_rowid;
end loop;
end;
標準update:做單錶更新或簡單的語句採用此方案更優;
inline view:做2表關聯且被更新表通過關聯主鍵關聯,採用此法更優;
merge:做2表關聯且被跟新錶不是通過關聯主鍵關聯的、更新需要進行多條件判斷的,採用此法更優;
快速游標更新法:多表關聯邏輯複雜的,採用此法更優;
oracle update多表關聯
update a.a3 a.a3 b.b3 的問題 表a 結構 a1 a2 a3 表b 結構 b1,b2,b3 其中 a1 b1 為pk 切值相同 就是可以使用a1 b1 了.請問用sql 語句或過程該如何實現如下的功能?更新a 表的 a3 用a.a3 與b.b3之和更新.3 update a se...
oracle update太慢優化
tb e zw nrllb temp 量700225 gsm user 量109398337 優化前 兩種update 說明 gsm user是檢視存在gsm user id索引,tb e zw nrllb temp有user id索引,使用以下兩種方法都更新時間超5h 導致不能更新成功 1upda...
oracle UPDATE 多表關聯更新
update customers a set city name select b.city name from tmp cust city b where b.customer id a.customer id where exists select 1 from tmp cust city b ...