饿虎岗资源网 Design By www.oxmxm.com
MySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDATE语法,使得原本需要执行3条SQL语句(SELECT,INSERT,UPDATE),缩减为1条语句即可完成。
例如ipstats表结构如下:
复制代码 代码如下:
CREATE TABLE ipstats (
ip VARCHAR(15) NOT NULL UNIQUE,
clicks SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0'
);
原本需要执行3条SQL语句,如下:
复制代码 代码如下:
IF (SELECT * FROM ipstats WHERE ip='192.168.0.1') {
UPDATE ipstats SET clicks=clicks+1 WHERE ip='192.168.0.1';
} else {
INSERT INTO ipstats (ip, clicks) VALUES ('192.168.0.1', 1);
}
而现在只需下面1条SQL语句即可完成:
复制代码 代码如下:
INSERT INTO ipstats VALUES('192.168.0.1', 1) ON DUPLICATE KEY UPDATE clicks=clicks+1;
注意,要使用这条语句,前提条件是这个表必须有一个唯一索引或主键。
总结如下:
1.如果表中不存在主键记录,replace和insert*update都与insert是一样的特点。
2.如 果表中存在主键记录,replace相当于执行delete 和 insert两条操作,而insert*update的相当于执行if exist do update else do insert操作。因此,如果replace填充的字段不全,则会导致未被更新的字段都会修改为默认值,并且如果有自增id的话,自增id会变化为最新的 值(这样如果是以自增id为标志的话可能导致记录丢失);而insert*update只是更新部分字段,对于未被更新的字段不会变化(不会强制修改为默 认值)。
多条记录操作:
复制代码 代码如下:
insert into t(a,b,c) values ('a1','b1','c1'),('a2','b2','c2')
on duplicate key update t.c=values(t.c)
例如ipstats表结构如下:
复制代码 代码如下:
CREATE TABLE ipstats (
ip VARCHAR(15) NOT NULL UNIQUE,
clicks SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0'
);
原本需要执行3条SQL语句,如下:
复制代码 代码如下:
IF (SELECT * FROM ipstats WHERE ip='192.168.0.1') {
UPDATE ipstats SET clicks=clicks+1 WHERE ip='192.168.0.1';
} else {
INSERT INTO ipstats (ip, clicks) VALUES ('192.168.0.1', 1);
}
而现在只需下面1条SQL语句即可完成:
复制代码 代码如下:
INSERT INTO ipstats VALUES('192.168.0.1', 1) ON DUPLICATE KEY UPDATE clicks=clicks+1;
注意,要使用这条语句,前提条件是这个表必须有一个唯一索引或主键。
总结如下:
1.如果表中不存在主键记录,replace和insert*update都与insert是一样的特点。
2.如 果表中存在主键记录,replace相当于执行delete 和 insert两条操作,而insert*update的相当于执行if exist do update else do insert操作。因此,如果replace填充的字段不全,则会导致未被更新的字段都会修改为默认值,并且如果有自增id的话,自增id会变化为最新的 值(这样如果是以自增id为标志的话可能导致记录丢失);而insert*update只是更新部分字段,对于未被更新的字段不会变化(不会强制修改为默 认值)。
多条记录操作:
复制代码 代码如下:
insert into t(a,b,c) values ('a1','b1','c1'),('a2','b2','c2')
on duplicate key update t.c=values(t.c)
饿虎岗资源网 Design By www.oxmxm.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
饿虎岗资源网 Design By www.oxmxm.com
暂无评论...
更新日志
2024年11月13日
2024年11月13日
- 宝可梦大集结国服公测有多少只宝可梦 大集结国服宝可梦一览
- 国外渲染大佬《FF7RE》新图赏
- 《夺宝奇兵》Xbox长实机公布:游戏玩法全面展示
- 《剑星》X《尼尔》联动官方图赏:永远看不腻的2B
- 甲子慧.2015-最爱【乾坤唱片】【WAV+CUE】
- 潘美辰.1993-找一个雨天【蓝与白】【WAV+CUE】
- 黄舒骏.1997-非常原创精神(南方金点系列)2CD【南方】【WAV+CUE】
- Yiruma李闰珉《怀旧十周年纪念精选集》【WAV分轨】
- 晓欣《醉爱DSD》[WAV+CUE]
- 【爵士萨克斯】RichardElliot-2016-SummerMadness【24bit-FLAC】
- 谭艳《最走心好声音HQ》马兰士德国黑胶[低速原抓WAV+CUE][1G]
- 群星《第6届 2010十大发烧唱片精选》 2CD [WAV+CUE][1.5G]
- 李梦瑶&张玮伽&谭艳&孙露 -《发烧四大天后2CD》DTS丽声 2CD [WAV分轨][2G]
- 原神海浪中的莎孚旁的幻写灵解锁方法
- 【阴阳师手游】原神5.2联动介绍