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

时间:2013-12-18 01:25:00

标签: 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。

1 个答案:

答案 0 :(得分:4)

这是known MySQL bug。修复程序在5.5.35,5.6.15和5.7.3更改日志中注明。