以下的文章主要講述的是 Oracle多表關聯中的update語句的實際應用,為了使大家更為仔細的看明白其實際的操作步驟,我們建立了下面的簡單模型與構造一部分的測試數據:在某個業務受理子系統BSS中,
客戶資料表
- create table customers
- (
- customer_id number(8) not null,
客戶標示
- city_name varchar2(10) not null,
所在城市
- customer_type char(2) not null,
客戶類型
- ...
- )
- create unique index PK_customers on customers (customer_id)
由於某些原因,客戶所在城市這個信息並不什麼准確,但是在
客戶服務部的CRM子系統中,通過主動服務獲取了部分客戶20%的所在
城市等准確信息,於是你將該部分信息提取至一張臨時表中:
- create table tmp_cust_city
- (
- customer_id number(8) not null,
- citye_name varchar2(10) not null,
- customer_type char(2) not null
- )
1) 最簡單的形式
經確認customers表中所有customer_id小於1000均為'北京'
1000以內的均是公司走向全國之前的本城市的老客戶:)
- update customers
set city_name='北京'
- where customer_id<1000
2) 兩表(多表)關聯Oracle update 僅在where字句中的連接
這次提取的數據都是VIP,且包括新增的,所以順便更新客戶類別
- update customers a
使用別名
- set customer_type='01'
01 為vip,00為普通
- where exists (select 1
- from tmp_cust_city b
- where b.customer_id=a.customer_id
- )
3) 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
- where b.customer_id=a.customer_id
- )