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