[MySQL技巧]INSERT … ON DUPLICATE KEY UPDATE(转)
2010-04-16 16:45
531 查看
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;
注意,要使用这条语句,前提条件是这个表必须有一个唯一索引或主键。
例如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;
注意,要使用这条语句,前提条件是这个表必须有一个唯一索引或主键。
相关文章推荐
- (转载)[MySQL技巧]INSERT INTO… ON DUPLICATE KEY UPDATE
- Mysql中Insert into xxx on duplicate key update和REPLACE INTO使用
- MySQL的Replace into 与Insert into ..... on duplicate key update ...真正的不同之处
- mysql 中 replace into 与 insert into on duplicate key update 的使用和不同点
- MySql中4种批量更新的方法update table2,table1,批量更新用insert into ...on duplicate key update, 慎用replace into.
- mysql insert ignore into; on duplicate key update
- MySQL的Replace into 与Insert into on duplicate key update真正的不同之处
- mysql insert的几点操作(DELAYED 、IGNORE、ON DUPLICATE KEY UPDATE )
- MySQL的Replace into 与Insert into on duplicate key update真正的不同之处
- MySql中4种批量更新的方法update table2,table1,批量更新用insert into ...on duplicate key update, 慎用replace into.
- MySql避免"重复插入记录"的方法(INSERT ignore into,Replace into,ON DUPLICATE KEY UPDATE)
- Mysql中Insert into xxx on duplicate key update问题
- Mysql replace into 与 insert into on duplicate key update 的区别
- mysql insert into on duplicate key update timestamp类型 (近期遇到问题)
- MySQL的Replace into 与Insert into ..... on duplicate key update ...真正的不同之处
- mysql中insert...on duplicate key update...使用
- MySQL中的insert ignore into, replace into, insert select, on duplicate key update的用法小结
- mysql 中使用INSERT ... ON DUPLICATE KEY UPDATE(insert ignore)
- 【转】MySQL的Replace into 与Insert into on duplicate key update真正的不同之处
- MySQL的Replace into 与Insert into ..... on duplicate key update ...真正的不同之处