我有一个执行批处理INSERT的MySQL查询,并使用ON DUPLICATE KEY UPDATE来更新行,以防万一有唯一的键重复。
INSERT INTO table1
(col1,col2,col3)
VALUES
(val1,val2,val3),
(val4,val5,val6),
(val7,val8,val9),
...
(valn,valx,valz)
ON DUPLICATE KEY UPDATE
col3 = VALUES(col3);
换句话说,除非存在重复的唯一键,否则将插入新行,在这种情况下,将更新col3。
查询完成后,我想知道插入了多少行以及更新了多少行。这可能吗?
添加类似blabla的新列,并将其设置为null作为默认值。我假设您将只使用一次。
然后
ON DUPLICATE KEY UPDATE
col3 = VALUES(col3),
blabla = 'up' ;
SELECT count(blabla) as allrows FROM table1; # returns all rows count
SELECT count(blabla) as updrows FROM table1 WHERE blabla = 'up'; # returns update count
SELECT count(blabla) as insrows FROM table1 WHERE blabla IS NULL; # returns inserts
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句