2

我有以下 SQL 语句

INSERT INTO my_counts (type,code,count) SELECT type,id ,1 from my_data WHERE user_id=10
ON DUPLICATE KEY UPDATE count = count + 1; 

这里type,code是一个复合主键。

您能否让我知道如何找出插入的记录数以及单独更新的记录数?

我知道SELECT ROW_COUNT()给出了受影响的行(2 用于更新,1 用于插入)。但是如何分别找出

1) the number of rows updated 
2) the number of rows inserted

谢谢你的帮助

问候

基兰

4

1 回答 1

2

我不知道从诊断信息中获取此信息的好方法。

在任何情况下,假设您已经控制它以便只有刚刚 INSERT编辑的行在表中(或只会被查询),这可以在事后简单地检索:

SELECT COUNT(*) as Inserted, SUM(count - 1) as Updated
FROM my_counts;

(请注意,正如我的 SQLFiddle示例中所包含的,这些数字实际上可以从基础数据中预测出来)。

于 2012-08-13T22:51:42.243 回答