my -> mysql on duplicate key update使用總結

CREATE TABLE `t_duplicate` (
`a` int(11) NOT NULL,
`b` int(255) DEFAULT NULL,
`c` int(255) DEFAULT NULL,
PRIMARY KEY (`a`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='測試驗證on duplicate key update 功能';函數

SELECT * FROM `t_duplicate`;測試

#添加和更新結果不同,
#添加數據時,也就是當表中不存在惟一主鍵爲a這條數據時,忽略on後面的內容,(此時是添加一條數據,不是update一條數據)
#當表中存在主鍵值一、4時,纔會執行ON DUPLICATE KEY UPDATE 後面的語句把c更新成a+b的值, 不然不會執行ON後面的。(此時是更新一條數據,而不是添加一條數據)
#VALUES()函數只在INSERT...UPDATE語句中有意義,其它時候會返回NULL。
INSERT INTO t_duplicate(a,b,c) VALUES (1,2,7),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);date

INSERT INTO t_duplicate (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=8; #執行三次,影響的行數分別是:1,2,0數據

相關文章
相關標籤/搜索