mysql实现多表关联更新的详细方法

  

不知道大家之前对类似mysql实现多表关联更新的详细方法的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完mysql实现多表关联更新的详细方法你一定会有所收获的只,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

 mysql实现多表关联更新的详细方法

创建以下的简单模型,并构造部分测试数据:
在某个业务受理子系统BSS中,

<>之前,客户资料表   创建表的客户   (   customer_id数量(8)not null,客户标示   city_name varchar2 (10) not null,所在城市   customer_type char (2) not null,客户类型   …   )   创建唯一索引PK_customers客户(customer_id)

由于某些原因,客户所在城市这个信息并不什么准确,但是在客户服务部的CRM子系统中,通过主动服务获取了部分客户的20%所在城市等准确信息,于是你将该部分信息提取至一张临时表中:

 tmp_cust_city创建表
  (
  customer_id数量(8)不是零,
  citye_name varchar2(10)非空,
  customer_type char (2) not null
  )

1)最简单的形式

<>之前,经确认客户表中所有customer_id小于1000均为& # 39;北京& # 39;   ——1000以内的均是公司走向全国之前的本城市的老客户:)   更新客户   设置city_name=& # 39;北京& # 39;   customer_id<1000

2)两表(多表)关联更新——仅在字在句中的连接

<>之前,这次提取的数据都是贵宾,且包括新增的,所以顺便更新客户类别吗   更新客户——使用别名   设置customer_type=& # 39; 01 & # 39;- - - 01为贵宾,00为普通   存在(选择1   从tmp_cust_city b   b.customer_id=a.customer_id   )

3)两表(多表)关联更新——被修改值由另一个表运算而来

<>之前更新客户——使用别名   设置city_name=(选择b。从tmp_cust_city b city_name b.customer_id=a.customer_id)   存在(选择1   从tmp_cust_city b   b.customer_id=a.customer_id   )   ——更新超过2个值   更新客户——使用别名   集(city_name customer_type)=(选择b.city_name b.customer_type   从tmp_cust_city b   在b.customer_id=a.customer_id)   存在(选择1   从tmp_cust_city b   b.customer_id=a.customer_id   )

注意在这个语句中,

<>之前(选择b.city_name b.customer_type   从tmp_cust_city b   b.customer_id=a.customer_id   )   与   (选择1   从tmp_cust_city b   b.customer_id=a.customer_id   )

是两个独立的子查询,查看执行计划可知,对b表/索引扫描了2篇;

如果舍弃的条件,则默认对一个表进行全表

更新,但由于(选择b。city_name从tmp_cust_city b b.customer_id=a.customer_id)

有可能不能提供“足够多,值,因为tmp_cust_city只是一部分客户的信息,

所以报错(如果指定的列——city_name可以为零则另当别论):

01407年,00000年,“不能更新(% s) NULL"

//*原因:

//*行动:

替换的方法:

<>之前更新客户——使用别名   设置city_name=nvl((选择b。从tmp_cust_city b city_name b.customer_id=a.customer_id), a.city_name)   或者   设置city_name=nvl((选择b。从tmp_cust_city b city_name b.customer_id=a.customer_id), & # 39;未知& # 39;)   ——当然这不符合业务逻辑了

一个比较简便的方法就是将一个表代入值表达式中,使用group by和有字句查看重复的纪录。

<>之前(选择b.customer_id、b.city_name count (*)   从tmp_cust_city b,客户   b.customer_id=a.customer_id   组由b.customer_id b.city_name   在count(*)在=2   )

看完mysql实现多表关联更新的详细方法这篇文章,大家觉得怎么样?如果想要了解更多相关,可以继续关注我们的行业资讯板块。

mysql实现多表关联更新的详细方法