我在INSERT SELECT ON DUPLICATE KEY UPDATE查詢時遇到了一些問題。我想執行一些操作,例如爲select所返回的每個行插入的表中的字段增量,其中一些行需要更新同一行。MySQL INSERT ... SELECT ... ON DUPLICATE KEY UPDATE增量
設置:
表源
CREATE TABLE `source` (
`key` int(11) NOT NULL AUTO_INCREMENT,
`data` int(11) DEFAULT NULL,
`state` int(11) DEFAULT NULL,
`group` int(11) DEFAULT NULL,
PRIMARY KEY (`key`)
);
表DEST
CREATE TABLE `dest` (
`dkey` int(11) NOT NULL,
`ddata` int(11) DEFAULT NULL,
`dstate` int(11) NOT NULL,
PRIMARY KEY (`dkey`,`dstate`)
) ;
源測試值
INSERT INTO `source` (`key`,`data`,`state`,`group`) VALUES (1,1,1,1);
INSERT INTO `source` (`key`,`data`,`state`,`group`) VALUES (2,2,2,1);
INSERT INTO `source` (`key`,`data`,`state`,`group`) VALUES (8,4,2,1);
查詢:
INSERT INTO `test`.`dest` (`dkey`,`ddata`,`dstate`)
SELECT `group`,`data`,`state` FROM `test`.`source`
WHERE `group` = 1
ON DUPLICATE KEY UPDATE
`ddata`= `ddata`+VALUES(`ddata`);
我需要做的是,當該行尚未在dest存在創建一個新的行數據= 1當行已經存在,我需要它來增加數據。
執行上面的查詢後的結果是:
dkey ddata dstate
1 1 1
1 4 2
在哪裏我希望他們是
1 1 1
1 6 2
而不是添加到以前的值,則替換它。
有什麼建議嗎?
+1發佈腳本。所有這些都是@Link做的! – Quassnoi 2011-04-20 10:18:07