1. 程式人生 > >mysql的ON DUPLICATE KEY UPDATE在INSERT語句中的用法

mysql的ON DUPLICATE KEY UPDATE在INSERT語句中的用法

1、如果在INSERT語句後面帶上ON DUPLICATE KEY UPDATE 子句,而要插入的行與表中現有記錄的惟一索引或主鍵中產生重複值,那麼就會發生舊行的更新; 2、如果插入的行資料與現有表中記錄的唯一索引或者主鍵****不重複,則執行新紀錄插入操作。

示例:

create table testtable(
	day date not null,
	slot tinyint unsigned not null,
	cnt int unsigned not null,
	primary key(day, slot)
) engine = InnoDB;
testtable表的惟一索引是由 day+slot 兩個欄位組成。

現有資料: day slot cnt 2017-11-19 10 1 2017-11-20 20 0

1、

insert into testtable(day, slot, cnt) values ('2017-11-19', 10, 1) ON DUPLICATE KEY UPDATE cnt = cnt + 1;

由於插入的資料中 day+slot 與現有的記錄的唯一索引重複了,所以執行舊行的更新,執行之後,最終結果是這樣的: day slot cnt 2017-11-19 10 2 2017-11-20 20 0

2、

insert into testtable(day, slot, cnt) values ('2017-11-19', 20, 1) ON DUPLICATE KEY UPDATE cnt = cnt + 1;

由於插入的資料中 day+slot 與現有的記錄的唯一索引或者主鍵都沒有重複了,所以執行新紀錄插入,執行之後,最終結果是這樣的: day slot cnt 2017-11-19 10 2 2017-11-19 20 1 2017-11-20 20 0