MySQL COUNT 给出不同的结果

Posted

技术标签:

【中文标题】MySQL COUNT 给出不同的结果【英文标题】:MySQL COUNT Giving DIfferent Results 【发布时间】:2019-04-11 02:51:40 【问题描述】:

如果我在 php 中使用它来计算记录,当实际上没有记录时,它的计数为 1。但是,当我在 HeidiSQL、phpmyadmin 或其他任何工具中运行相同的查询时,它会给出正确的 0。为什么会出现差异?

if ($result = $mysqli->query($Query)) :
    return $result->num_rows;
    $MySQLError = ($mysqli->connect_errno) ? mysqli_error($mysqli) : "";
    $result->close();
    $mysqli->close();
    if ($MySQLError) return $MySQLError;
endif;

$Query,在这种情况下,包含:

SELECT COUNT(ID) AS UpdateCount 
FROM tablename 
WHERE ShowPage = 1 AND 
DateUpdated BETWEEN 1554345942 AND 1554950742

【问题讨论】:

【参考方案1】:

在做其他事情的时候,这个问题的答案突然打动了我,现在我明白了。我在查询中使用 COUNT(ID),但也在编程中使用 $result->num_rows。只需删除 COUNT(ID) 就可以了。

SELECT ID 
FROM tablename 
WHERE ShowPage = 1 AND 
DateUpdated BETWEEN 1554345942 AND 1554950742

【讨论】:

很好地找到它。接受并投票赞成您的答案,以便未来有相同或类似问题的访问者受益! @Don't Panic 谢谢你,我对此感到有点愚蠢,但我确信我错过了一些显而易见的事情。令我惊讶的是,这里的锐利眼睛没有立即发现它!无论如何,我无法对自己的答案投赞成票,而且我看到有人出于某种未知原因投了反对票,但如果我再等九个小时,我可以将其标记为已接受。【参考方案2】:

如果尚未提交另一个数据库会话,则可能会出现此问题。确保没有其他尚未提交的数据库会话可以解决此问题。

【讨论】:

可能,但即使没有运行其他查询,它似乎也始终不正确。在 HeidiSQL 和 phpmyadmin 中总是正确的,但在 PHP 中从来没有,所以我怀疑它比我错过的更基本。奇怪,我用同样的代码很久了,才注意到这个问题。

以上是关于MySQL COUNT 给出不同的结果的主要内容,如果未能解决你的问题,请参考以下文章

相同的mysql查询在phpmyadmin的不同时间给出不同的结果

两个相似的 MySQL 查询给出不同的结果

MySQL 专家:为啥 2 个查询给出不同的“解释”索引使用结果?

为啥这个 MySQL 存储函数给出的结果与在查询中进行计算不同?

在 mongodb 中计数不同而不给出不同的结果

Spark rdd.count() 产生不一致的结果