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