mysqlONDUPLICATEKEYUPDATE语句示例
示例 语句
2023-06-13 09:15:07 时间
MySQL自4.1版以后开始支持INSERT…ONDUPLICATEKEYUPDATE语法,使得原本需要执行3条SQL语句(SELECT,INSERT,UPDATE),缩减为1条语句即可完成。
例如ipstats表结构如下:
复制代码代码如下:
例如ipstats表结构如下:
CREATETABLEipstats(
ipVARCHAR(15)NOTNULLUNIQUE,
clicksSMALLINT(5)UNSIGNEDNOTNULLDEFAULT"0"
);
原本需要执行3条SQL语句,如下:
IF(SELECT*FROMipstatsWHEREip="192.168.0.1"){
UPDATEipstatsSETclicks=clicks+1WHEREip="192.168.0.1";
}else{
INSERTINTOipstats(ip,clicks)VALUES("192.168.0.1",1);
}
而现在只需下面1条SQL语句即可完成:
INSERTINTOipstatsVALUES("192.168.0.1",1)ONDUPLICATEKEYUPDATEclicks=clicks+1;
注意,要使用这条语句,前提条件是这个表必须有一个唯一索引或主键。
总结如下:
1.如果表中不存在主键记录,replace和insert*update都与insert是一样的特点。
2.如果表中存在主键记录,replace相当于执行delete和insert两条操作,而insert*update的相当于执行ifexistdoupdateelsedoinsert操作。因此,如果replace填充的字段不全,则会导致未被更新的字段都会修改为默认值,并且如果有自增id的话,自增id会变化为最新的值(这样如果是以自增id为标志的话可能导致记录丢失);而insert*update只是更新部分字段,对于未被更新的字段不会变化(不会强制修改为默认值)。
多条记录操作:
insertintot(a,b,c)values("a1","b1","c1"),("a2","b2","c2")
onduplicatekeyupdatet.c=values(t.c)
相关文章
- bat示例待整理
- 【CSS】盒子模型内边距 ② ( 内边距复合写法 | 代码示例 )
- mongodb 数据如何生成Insert 语句的示例
- oracle使用sql语句增加字段示例(sql删除字段语句)
- sql 语句插入结果为select和值混合示例
- python抓取图片示例详解编程语言
- MySQL查询语句的排序示例(mysql查询语句排序)
- Oracle实验三:SQL查询和管理语句示例(oracle实验三)
- MySQL左连接语句示例及写法详解(mysql左连接写法)
- Oracle即学即会:建立主键语句示例(oracle 建主键语句)
- Oracle事务控制语句示例解析(oracle事物语法示例)
- MySQL详解不等于语句用法及示例(mysql 不等于语句)
- jspjs鼠标移动到指定区域显示选项卡离开时隐藏示例
- MySQL中select语句介绍及使用示例
- javascript随机将第一个dom中的图片添加到第二个div中示例
- mysqlSELECTFORUPDATE语句使用示例
- t-sql/mssql用命令行导入数据脚本的SQL语句示例
- c#后台输出javascript语句示例程序
- zf框架db类的分页示例分享
- c#封装百度web服务geocodingapi、百度坐标转换示例
- c#实现把异常写入日志示例(异常日志)
- Jquery焦点与失去焦点示例应用
- Oracle定义DES加密解密及MD5加密函数示例
- Angularjs基础知识及示例汇总