当前第2页 返回上一页
如果舍弃where条件,则默认对A表进行全表
更新,但由于(select b.city_name from tmp_cust_city b where where b.customer_id=a.customer_id)
有可能不能提供"足够多"值,因为tmp_cust_city只是一部分客户的信息,
所以报错(如果指定的列--city_name可以为NULL则另当别论):
01407, 00000, "cannot update (%s) to NULL"
// *Cause:
// *Action:
替换的方法:
1 2 3 4 5 | update customers a -- 使用别名
set city_name=nvl((select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id),a.city_name)
或者
set city_name=nvl((select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id), '未知' )
-- 当然这不符合业务逻辑了
|
一个比较简便的方法就是将A表代入 值表达式 中,使用group by 和having 字句查看重复的纪录。
1 2 3 4 5 6 | (select b.customer_id,b.city_name, count (*)
from tmp_cust_city b,customers a
where b.customer_id=a.customer_id
group by b.customer_id,b.city_name
having count (*)>=2
)
|
以上就是mysql多表关联更新的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
看看mysql 5.6, 5.7, 8.0的新特性!
mysql怎么优化
掌握四大mysql知识点,就可吊打面试官!
wdcp上如果修改mysql密码
关于mysql 时间戳格式化函数from_unixtime的使用说明
mysql循环语句之while循环测试
mysql如何通过实例化对象参数查询数据 ?(源代码)
mysql精讲之二:dml数据操作语句
mysql使用命令实现分级查找帮助的方法
mysql8.0连接协议及3306、33060、33062端口的作用解析
更多相关阅读请进入《mysql》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » mysql多表关联更新