- ベストアンサー
もっとも新しいレコードから検索する方法
MySQLにデータを登録しており、PHPにてWebサイトにデータを表示しています。SQLはSELECT * FROM TABLE WHERE .... なんですが、この場合一番初めのレコードから順に表示されてしまうため、古いデータがはじめに、新しいデータが最後尾に表示されてしまいます。 これを解消するため最後尾のレコードから検索するにはどうしたらよいのでしょうか?又、カテゴリが異なってしまいますが、PHPでもっとよい方法などございましたらお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>一番初めのレコードから順に表示されてしまうため、古いデータがはじめに、新しいデータが最後尾に表示 RDBMSとしては、ORDER BYを指定しない場合の検索順序は保証されません。 格納日時を入れる列を表に持たせ、検索時にその列の値の降順に検索すればいいだけでは? SELECT * FROM TABLE WHERE .... ORDER BY 日時 DESC
その他の回答 (5)
- chukenkenkou
- ベストアンサー率43% (833/1926)
こんなデタラメなSQLは、どうやったら思いつくのでしょうね。。。 SELECT * FROM TABLE →表名は「TABLE」? 予約語って、知ってますか? もし指定するなら、`TABLE`と指定しましょう。 英単語を表名や列名に指定すると、予約語とぶつかってしまう場合が少なくありません。 RDBMSに予約語と解釈されると、思わぬ構文エラーになります。 その場合、「`」または「"」で囲むことで、名称として使用できます。 → WHERE okwave = 'hoge' , ORDER BY what DESC , WHERE~とORDER BY~の間に、カンマは指定できません。 →ORDER BY what DESC , ORDER BY something ORDER BYで二つ以上の列を指定する場合は、 ORDER BY C1,C2 と列名を並べます。 →LIMIT "26", 10 なぜ数字を「"」で囲むのでしょう? 以上を訂正すると、以下のようになります。 SELECT * FROM `TABLE` WHERE okwave = 'hoge' ORDER BY what DESC , something LIMIT 26, 10;
お礼
ありがとうございました。
- taskuni
- ベストアンサー率71% (49/69)
ORDER BY節でカラム2つ以上指定されている時、 どのようにカンマで区切られているのか、見てみましたか? >ORDER BY what DESC , ORDER BY something このような書き方はされていないはずです。
補足
回答ありがとうございます。http://dev.mysql.com/doc/refman/4.1/ja/order-by-optimisation.htmlを見て以下のSQLで試してみましたがやはりだめでした。 ORDER BY what DESC,somethig LIMIT... ん~SQLって難しいのですね。できれば答えを教えていただくとありがたいです。
- taskuni
- ベストアンサー率71% (49/69)
もう十分に答えは出ていると思います。 いろいろ調べたり試してみましたか?
お礼
回答ありがとうございます。 ローカルの環境にて何回も試しましたがエラーが出てしまいました。又、MySQLの公式サイトで調べたり、手持ちのリファレンスブックなどを手にとって調べていますが、エラーが出てしまいます。 よろしくお願いします。
- moon_night
- ベストアンサー率32% (598/1831)
>ORDER BY~を2つ以上指定するにはどのようなSQL文にすればよいのでしょうか? カンマで区切る。
補足
回答ありがとうございました。 教えていたあきましたとおりカンマで仕切りましたがエラーが出てしまいます。 SQLは以下の通りです。 SELECT * FROM TABLE WHERE okwave = 'hoge' , ORDER BY what DESC , ORDER BY something LIMIT "26", 10; よろしくお願いします。
- driverII
- ベストアンサー率27% (248/913)
あんまりPHPは詳しくないんですが・・(^^; 参考URLのやり方が参考になりませんか?
お礼
回答ありがとうございます。 ORDER BY~を2つ以上指定するにはどのようなSQL文にすればよいのでしょうか?実はすでにORDER BY~はすでにあり AND で仕切ってもエラーが出てしまいました。 よろしくお願いします。