Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL插入和更新的记录数_Mysql_Sql - Fatal编程技术网

MYSQL插入和更新的记录数

MYSQL插入和更新的记录数,mysql,sql,Mysql,Sql,我有以下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; 在这里,类型、代码是一个复合主键 你能告诉我怎样才能知道插入的记录数以及单独更新的记录数吗 我知道SELECT ROW_COUNT()给出了受影响的行(2个用于更新,1个用于插入)。 但如何分别找出答案呢 1) t

我有以下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; 
在这里,类型、代码是一个复合主键

你能告诉我怎样才能知道插入的记录数以及单独更新的记录数吗

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

1) the number of rows updated 
2) the number of rows inserted
谢谢你的帮助

问候


Kiran

我不知道从诊断信息中获得这一信息的好方法

在任何情况下,假设您已经对其进行了控制,以便表中只包含刚刚插入的行(或只会被查询),则可以在事实发生后简单地检索:

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

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

不错的解决方案,但如果计数表中已经有数据的话?:)Kiran@Bujji-然后您可以预测它(如我示例中的最后一个查询),或者您需要一些区分列(如某种插入批次id、时间戳等)。感谢您提供的解决方案,这对我很有帮助