【问题标题】:Update anomaly. Mysql sql different rows affected count更新异常。 Mysql sql不同的行影响计数
【发布时间】: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 行受到影响。。我不应该得到相同的数字吗?还有其他可能的原因吗?还是我哪里错了?

【问题讨论】:

    标签: mysql


    【解决方案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 分,则加倍点数无效,这些记录将不计入计数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-02
        • 2012-04-28
        • 2021-08-11
        • 1970-01-01
        • 2019-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多