【mysql】insert ... on duplicate key update column=IF(条件,值1,值2 ) 简直神一样的操作
来源:互联网 发布:海量数据是什么 编辑:程序博客网 时间:2024/06/05 05:26
Insert...on duplicate key相信大家都知道了,是一个非常好用的功能,可以在批量导入数据的时候插入并且保证在key冲突的时候执行更新操作而不是报错。笔者最近写代码的时候却碰到一个需求,就是想要在这个基础上根据某列的值来决定update后面的值,举个例子,如果columnA>0,那么更新columnB=1或者不更新,然后就在网上对duplicate key和update的用法大肆搜索一番,看有没有类似的用法,结果都是比较常规的用法,颇为失望。然后又想到普通的update是在后面加where条件的,那能不能试试直接加where条件呢?残念,这个也行不通。。。
然后在准备放弃老老实实用2条sql执行的时候,脑子里突然灵光一闪,想到mysql不是有自带函数的么?能不能结合利用一下呢?于是查mysql函数大全,我翻翻翻,bingo!终于被我找到一个函数
IF 函数用法
语法: IF(expr1,expr2,expr3)
函数用法说明:如果 expr1 是 TRUE (expr1 <> 0 and expr1 <> NULL) ,则 IF() 的返回值为 expr2 ; 否则返回值则为 expr3 。 IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定
这不就是我想要的吗?赶紧试试
INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KEY UPDATE columnA=IF(columnB>0,1,columnA)
INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KEY UPDATE columnA=IF(columnB>0,1,columnA)
搞定!这样在insert on duplicate key update的时候就可以根据某列值的不同来决定update的值了
- 【mysql】insert ... on duplicate key update column=IF(条件,值1,值2 ) 简直神一样的操作
- [mysql 语法]INSERT ... ON DUPLICATE KEY UPDATE
- mysql INSERT ... ON DUPLICATE KEY UPDATE
- Mysql insert xxx on duplicate key update
- mysql → INSERT ... ON DUPLICATE KEY UPDATE
- mysql INSERT ... ON DUPLICATE KEY UPDATE语句
- MySQL INSERT ON DUPLICATE KEY UPDATE
- MYSQL的REPLACE和INSERT ... ON DUPLICATE KEY UPDATE
- mysql insert的几点操作(DELAYED,IGNORE,ON DUPLICATE KEY UPDATE )
- mysql insert的几点操作(DELAYED 、IGNORE、ON DUPLICATE KEY UPDATE )
- mysql insert的几点操作(DELAYED 、IGNORE、ON DUPLICATE KEY UPDATE )
- INSERT ... ON DUPLICATE KEY UPDATE
- INSERT ... ON DUPLICATE KEY UPDATE
- insert...on duplicate key update
- INSERT ... ON DUPLICATE KEY UPDATE
- INSERT ... ON DUPLICATE KEY UPDATE
- INSERT ... ON DUPLICATE KEY UPDATE
- INSERT ... ON DUPLICATE KEY UPDATE
- 地图服务 纬度、经度对应坐标轴x,y
- 实现当TreeView中父节点的CheckBox的点选状态改变时,回发服务器端,并且选中父节点,所有子节点全选中
- 基于 REST 的 Web 服务:基础
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- JAVA内存组成
- 【mysql】insert ... on duplicate key update column=IF(条件,值1,值2 ) 简直神一样的操作
- linux下navicat安装
- c# 线程间操作无效: 从不是创建控件“textBox1”的线程访问它。解决方法
- OnPageChangeListener的简单运用
- Display Command Line Arguments (C# Programming Guide)
- handler obtainMessage
- 九度题目1139:最大子矩阵
- 用RD,GR,BL三个方法内代码生成一张图片(非原创,加工品)
- php curl_init函数用法