更新异常。 Mysql sql不同的行影响计数
Posted
技术标签:
【中文标题】更新异常。 Mysql sql不同的行影响计数【英文标题】:Update anomaly. Mysql sql different rows affected count 【发布时间】:2014-06-13 01:04:04 【问题描述】:SELECT * FROM `attempts` WHERE date = '27-04-2014' LIMIT 0 , 30
这个特定的查询给出了 386 个结果(phpmyAdmin) 但在执行以下查询时
UPDATE `attempts` SET points = points *2 WHERE date = '27-04-2014'
我有 379 行受到影响。。我不应该得到相同的数字吗?还有其他可能的原因吗?还是我哪里错了?
【问题讨论】:
【参考方案1】:查询不会影响points = 0
所在的行,因为点值加倍不会有任何影响。
例如,尝试运行以下查询:
UPDATE `attempts` SET points = points + 0 WHERE date = '27-04-2014'
它会显示 0 行受影响。
另外,phpMyAdmin is an estimate 显示的计数,如果您使用的是 InnoDB。使用COUNT(*)
获取准确计数。
SELECT COUNT(*) FROM `attempts` WHERE date = '27-04-2014'
【讨论】:
【参考方案2】:“受影响的行”仅计算已更改的行。如果您有记录为 0 分,则加倍点数无效,这些记录将不计入计数。
【讨论】:
以上是关于更新异常。 Mysql sql不同的行影响计数的主要内容,如果未能解决你的问题,请参考以下文章
更新MySQL数据库( java.sql.SQLException: No value specified for parameter 1) 异常 解决方法