2017-07-18 3 views
-1

に表示されます、これは私のsqlです:使用MySQLのORDER BYとリミット、同じレコードが2ページ

SELECT ID 
FROM table R 
ORDER BY rank desc limit 0,25; 

すべてrecords`sランクは私が制限を使用して25としてPASEサイズを設定0

です。 限界0,25を使用すると、最初のページが表示されます。 制限を使用して25,25、私は2番目のページを取得します。

問題は、2つのページの両方に1つのレコードが表示されることです。

これはmysqlのバグだと思います。 私のmysqlのバージョンは5.6.24です。

誰でも助けてくれますか?

+0

*「すべてのレコードのランクは0です。」* - 「ORDER BYランク」のレコードの一意の順序はありません。テーブルが更新または圧縮されている場合(またはバックアップからデータを復元した後に)、 'LIMIT 0,25'でも異なる実行で異なる行を返すことがあります。 – axiac

+0

すべてのレコードのランクが0の場合は、なぜOrder By? –

+0

しかし私のテーブルは決して更新も圧縮もされていません。変更はありません。 結果は各実行で同じになるとは限りませんか? – mascure

答えて

1

すべてrecords`sランクは、レコードあなたORDER BY rankのないユニークな順序はありません0

です。 LIMIT 0,25でも、テーブルが更新または圧縮されている(またはバックアップからデータを復元した後)違う実行で異なる行を返す可能性があり、間違っていません。

ORDER BY rank DESC, ID DESCを使用すると、等しいランクの行が常に同じ順序で返されることを確認できます。

私はID DESCを追加して、最新の行を最初に取得しました。テーブルに最後に変更された日付を格納する列が含まれている場合は、IDの代わりに使用します。または、アプリケーションに適した別のソートルールを作成します。

関連する問題