- ベストアンサー
【バグ?】ORDER BY DESCでempty
MySQLを使っていて、下記条件で結果がemptyになります。 どうすれば正常に取得できるようになるでしょうか。 SELECT `hoge`, `fuga`, `piyo` FROM `table` WHERE `moge` = 'moge' ORDER BY `fuga` DESC LIMIT 0, 5 ・`moge`と`piyo`にはインデックスが貼られています。 ・DESCを消すと正常に取得できます。 ・WHERE句を消すと正常に取得できます。 ・LIMITの数値を大きくすると正常に取得できます。('moge'によってどれくらい大きくすればいいかの数値は違う) ・LIMITのoffsetを1以上にすると正常に取得できます。 1ヶ月ほどはちゃんと動作していたのですが、`fuga`をUPDATEしたタイミングからこのような現象となりました。 環境 ・Ubuntu 12.04.1 LTS ・MySQL 5.5.28 ・エンジン mroonga ・groongaのバージョン2.0.9 足りない情報があれば補足致します。 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
SELECT `hoge`, `fuga`, `piyo` from ( SELECT * FROM `table` WHERE `moge` = 'moge' ) S ORDER BY `fuga` DESC LIMIT 0, 5 のようにサブクエリを使っても動作は変わりませんか?
その他の回答 (1)
- nora1962
- ベストアンサー率60% (431/717)
正直原因は分かりません。「mroonga」を使っているのが影響しているのかもしれません。 とりあえずの対症療法と考えてください。 できれば、エンジンをInnodbのみした時に再現するのかを試して、「mroonga」の問題らしければ開発コミュニティにメールしたほうがいいでしょう。
補足
教えていただいた方法で正常に返ってくるようになりました! でも出来れば、原因をちゃんと把握しておきたいのと、修正できるなら修正をしたいのですが原因までわかりますでしょうか? よろしければご教授ください。宜しくお願い致します。