6
私は、次のクエリを持っている:MySQLが単純なクエリに対して誤ったカウントを与えているのはなぜですか?
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」の下の結果を取得。
ただし、のユニークなインデックスとしてテーブルがであり、重複データがないことを確認して再度確認しました。例えば、私が実行しました:
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です。
'COUNT()'を使用しない場合、返される行数はいくつですか? 'SELECT resource_id AS num FROM resources_authors WHERE author_id-1657'? –
resource_idはユニークキーの* only *列ですか?それはヌル可能ですか?そうであれば、ヌル値のいずれかですか? –
まず、 'resources_authors'という名前のテーブルが' resource_id'だけにユニークなインデックスを持っていることが疑わしいと思います。第二に、(あなたがそれを記述する)この動作は非常に独特です。クエリ実行間にテーブルが変更されていないことを確認してください。 –