- ベストアンサー
PerlからMysqlに接続してデータを昇順?降順に並べる方法
- PerlからMysqlに接続してデータを昇順や降順に並べる方法についての質問です。
- 要約すると、PerlからMysqlに接続してデータを昇順で表示する方法は正常に動作するが、降順で表示する方法がうまくいかないとのことです。
- 質問者は降順で表示させるのではなく、あるnoから3つのデータを表示したいとしています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> limitで指定したように、あるnoから3つとかしたいのです おそらくLIMIT自体を勘違いなさっているのでは。 LIMITの1つ目の引数はオフセット、つまり先頭から数えた位置です。降順に並べておいて、先頭から数えて5行目から2行だけを取り出せ、という意味になります。「noが5のレコード」という意味ではありません。 マニュアルをご確認ください(参考URL)。 しかしレコードが100個あるとのことですが、ちょっと矛盾しますね…(10個なのでは?)。この点ももう一度確認してみては。 「noが5のレコードから、降順に2つを取り出したい」ということなら、 WHERE no<=5 ORDER BY no DESC LIMIT 5,2 という感じでしょうか。
- 参考URL:
- http://www.mysql.gr.jp/
その他の回答 (2)
- taseki
- ベストアンサー率66% (155/233)
> WHERE no<=5 ORDER BY no DESC LIMIT 2 > では違うのでしょうか。これも私の勘違いかな・・・。 いいえ、この部分は、今度は私の勘違いです…、大変失礼しました。 よく確認せずにコピペしてしまいました。混乱させてしまい申し訳ありません。
お礼
それならよかったです。自信がなかったので・・・。 教えてもらった事と参考URLを見させていただき、少しずつですがうまく使えるようになってきました。 ありがとうございました。 特に今回は私のlimitの解釈が間違ってて思った通りの結果が出なかったように思います。 この度は、詳しく教えていただきほんとにありがとうございました。
- lv4u
- ベストアンサー率27% (1862/6715)
>>こうすると、no6,no5という順に抽出されます。ちなみに、limit 5,2をlimit 5,3とすると、no6,no5,no4と抽出されます。なぜここでlimit 5,2の際にno5,no4でlimit 5,3の際にno5,no4,no3という順に抽出されないのか分かりません。 なんか、上記の部分だけみると、正常動作のようにも思えますけど? >>私がしたいのは、noを降順(no5,no4,no3・・・)という順に表示させたいのです。 という期待が、もしかすると「1+1=3を期待しているのに、1+1=2になってしまうんです」 というような期待する答え自体が間違っているのでは? データが100個あるとのことですが、もう少し件数を減らして、期待する結果と得られた結果を比較してみることをお勧めします。こういう場合、人間よりもコンピュータのほうが正しいでしょうからね。
補足
tasekiさん、詳しく説明していただいてありがとうございます。 私がlimitについて勘違いしていたようです・・・。 no5と5行目というのが、ごちゃごちゃになってちゃんと区別出来てなかった為、難しくなっていたのかも・・・。 >「noが5のレコードから、降順に2つを取り出したい」ということなら、 >WHERE no<=5 ORDER BY no DESC LIMIT 5,2 上記の件ですが、「no5のレコードから降順に2つ」なので、 WHERE no<=5 ORDER BY no DESC LIMIT 2 では違うのでしょうか。これも私の勘違いかな・・・。