MYSQL插入和更新的记录数

标签 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; 

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

能否告诉我如何分别查出插入的记录数和更新的记录数?

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

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

感谢您的帮助

问候

基兰

最佳答案

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

无论如何,假设您已经控制它,以便只有 刚刚 INSERT 编辑的行位于表中(或仅被查询),这可以事后简单地检索:

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

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

关于MYSQL插入和更新的记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11942024/

相关文章:

java - Hibernate逆向工程-多对多关系

sql - 使用 TypeORM 一次更新多条记录时如何忽略 DUPLICATE ENTRY 错误

sql - Oracle Date TO_CHAR ('Month DD, YYYY' ) 中有额外的空格

mysql - 定时Mysql查询akka http

php - 如何使用 PHP 获取文档的内容并上传到 Mysql blob 字段?

更新XAMPP后MySQL无法启动

python - 解析查询结果以将其插入另一个数据库

sql - parent 、子女、子子女 CTE

sql - 将 "summed up flags"转换回原来的含义

sql - 当表太大时 ROW_NUMBER() 失败