我有以下查询:
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/