可以在INSERT INTO…..后面加上 ON DUPLICATE KEY UPDATE方法來實(shí)現(xiàn)荐捻。如果您指定了ON DUPLICATE KEY UPDATE爆惧,并且插入行后會(huì)導(dǎo)致在一個(gè)UNIQUE索引或PRIMARY KEY中出現(xiàn)重復(fù)值豁延,則執(zhí)行舊行UPDATE。
例如昧旨,如果列a被定義為UNIQUE查乒,并且包含值1,則以下兩個(gè)語句具有相同的效果:
INSERT INTO `table` (`a`, `b`, `c`) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE `c`=`c`+1;
UPDATE `table` SET `c`=`c`+1 WHERE `a`=1;
如果行作為新記錄被插入盒发,則受影響行的值為1例嘱;如果原有的記錄被更新,則受影響行的值為2宁舰。
注釋:如果列b也是唯一列拼卵,則INSERT與此UPDATE語句相當(dāng):
UPDATE `table` SET `c`=`c`+1 WHERE `a`=1 OR `b`=2 LIMIT 1;