背景:replace很好用,的应用场景比较多,但是直接使用可能会造成一引起字段的值丢失.

解决方法:

一.原始数据

select id,f1,f2 ,flag from update_test;

id f1 f2 flag
1 1 a 1
2 2 b 1

二.更新一条记录(注意字段flag的值会丢失)
replace into update_test(id,f1,f2)
select 1 id,'100' f1,'aa' f2
;

id f1 f2 flag
1 100 aa (null)
2 2 b 1

注意:replace是先删除,后插入;如果插入的数据是部分字段(如读取订单.csv),那么其实就造成了数据丢失.

三.避免方法,通过关联语句先查询出整行数据:
replace into update_test(id,f1,f2,flag)

select a.id,a.f1,a.f2,b.flag
from (select 2 id,'200' f1,'bb' f2 ) a join (select id,flag from update_test) b on a.id=b.id
;
影响行数:2

查询数据:

select id,f1,f2 ,flag from update_test;

id f1 f2 flag
1 100 aa (丢失)
2 200 bb 1 (保存了原来的数据)

#

最新文章

  1. 3.1 AngularJS必备知识
  2. Atitit.会员卡(包括银行卡)api的设计
  3. apache2 tomcat https配置-被忽悠进了CentOS 6
  4. SQL Server 存储过程自定义生成ID号
  5. js Array 交集 并集 差集 去重
  6. android-详解Android 6.0运行时权限
  7. Linux C 文件与目录4 将缓冲区数据写入磁盘
  8. echo输出空行
  9. bzoj1058: [ZJOI2007]报表统计
  10. Android开发UI之个性化控件之Menu
  11. 【转】 iOS 两种方法实现左右滑动出现侧边菜单栏 slide view
  12. hdu1507--二分图最大匹配
  13. java.lang.NullPointerException错误分析
  14. 汉诺塔python3函数编写和过程分析
  15. 手机PC监听用户复制内容
  16. linux中安装程序及账户管理
  17. BZOJ4269再见Xor——高斯消元解线性基
  18. 修改Tomcat默认连接数
  19. jmeter的使用
  20. HDU 6156 数位dp

热门文章

  1. html中引入外部js文件,使用外部js文件里的方法
  2. 洛谷 P5502 - [JSOI2015]最大公约数(区间 gcd 的性质+分治)
  3. 洛谷 P6499 - [COCI2016-2017#2] Burza(状压 dp)
  4. Vue 中使用 TypeScript axios 使用方式
  5. 自动添加shell脚本头部信息
  6. Linux之vi和vim编辑器
  7. Docker的基本使用及DockerFile的编写
  8. day08 索引的创建与慢查询优化
  9. Linux 【复习巩固】
  10. JavaScript小数、百分数的转换