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_idnumber(8) not null,
citye_name varchar2(10) not null,
customer_typechar(2) not null
)
1) 最简单的形式
--经确认 customers 表中所有 customer_id 小于 1000 均为'北京'
--1000 以内的均是公司走向全国之前的本城市的老客户:)
update customers
setcity_name='北京'
wherecustomer_id<1000
2) 两表(多表)关联 update -- 仅在 where 字句中的连接
--这次提取的数据都是 VIP,且包括新增的,所以顺便更新客户类别
update customersa -- 使用别名
setcustomer_type='01' --01 为 vip,00 为普通
whereexists (select 1
from tmp_cust_city b
whereb.customer_id=a.customer_id
)
3) 两表(多表)关联 update -- 被修改值由另一个表运算而来
update customers a -- 使用别名
set city_name=(select b.city_name from tmp_cust_city b where
b.customer_id=a.customer_id)
whereexists (select 1
评论0