Andy's Blog » mysql insert or update, mysql insert update, mysql update insert, INSERT OR UPDATE, mysql update or insert, insert or update mysql, insert update mysql, mybatis inset into ON duplicate key UPDATE 返回值, insert into on duplicate key update if » [MySQL技巧]INSERT … ON DUPLICATE KEY UPDATE

[MySQL技巧]INSERT … ON DUPLICATE KEY UPDATE

[MySQL技巧]INSERT … ON DUPLICATE KEY UPDATE

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;

注意,要使用这条语句,前提条件是这个表必须有一个唯一索引或主键。

Incoming search terms:

Tags: mysql

本文地址: http://www.21andy.com/new/20071123/687.html