mysql - 为什么 MySQL 对简单查询的计数不正确?

标签 mysql sql count

我有以下查询:

SELECT COUNT(resource_id) AS num
FROM resources_authors
WHERE author_id=1657

这将返回正确的结果“75”。

如果我将查询更改为仅搜索不同的 ID:

SELECT COUNT(DISTINCT resource_id) AS num
FROM resources_authors
WHERE author_id=1657

我得到较低的结果“74”,这是不正确的。

但是,该表作为resource_id 的唯一索引,我已经检查并仔细检查没有重复数据。例如,我运行过:

SELECT resource_id, COUNT(resource_id) AS c
FROM resources_authors
WHERE author_id =1657
GROUP BY resource_id
ORDER BY c DESC

更奇怪的是,如果我将 LIMIT 添加到错误的查询中,它就会返回正确的结果!所以:

SELECT COUNT(DISTINCT resource_id)
FROM resources_authors
WHERE author_id=1657
LIMIT 0 , 100

正确返回 75。

我是遇到了错误,还是我误解了什么?这是一个 INNODB 表,Windows 上的 MySQL 5.5.24。

最佳答案

这是一个known MySQL bug . 5.5.35、5.6.15 和 5.7.3 变更日志中记录了此修复。

关于mysql - 为什么 MySQL 对简单查询的计数不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20648045/

相关文章:

mysql - 在线 (My)SQL 工具可以转义字符串以便在查询中使用?

c# - 如何将 SQL 查询应用于 C# 数据表/数据集?

r - 向量中按组的开关数

mysql - 插入 MySQL 表或更新(如果存在)

ios - 如何添加按钮点击次数并在字典中计数

mysql - ORDER BY 与 CASE MySQL

mysql - bash脚本中的特殊字符

mysql - 尝试设计/建模简单的数据库应用程序

mysql - MySQL 可以成对自动递增吗?

php - 一般错误 : 2031 when uniting two queries (laravel datatables)