• ベストアンサー

もっとも新しいレコードから検索する方法

MySQLにデータを登録しており、PHPにてWebサイトにデータを表示しています。SQLはSELECT * FROM TABLE WHERE .... なんですが、この場合一番初めのレコードから順に表示されてしまうため、古いデータがはじめに、新しいデータが最後尾に表示されてしまいます。 これを解消するため最後尾のレコードから検索するにはどうしたらよいのでしょうか?又、カテゴリが異なってしまいますが、PHPでもっとよい方法などございましたらお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>一番初めのレコードから順に表示されてしまうため、古いデータがはじめに、新しいデータが最後尾に表示 RDBMSとしては、ORDER BYを指定しない場合の検索順序は保証されません。 格納日時を入れる列を表に持たせ、検索時にその列の値の降順に検索すればいいだけでは? SELECT * FROM TABLE WHERE .... ORDER BY 日時 DESC

itmedia_search
質問者

お礼

回答ありがとうございます。 ORDER BY~を2つ以上指定するにはどのようなSQL文にすればよいのでしょうか?実はすでにORDER BY~はすでにあり AND で仕切ってもエラーが出てしまいました。 よろしくお願いします。

その他の回答 (5)

回答No.6

こんなデタラメな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;

itmedia_search
質問者

お礼

ありがとうございました。

  • taskuni
  • ベストアンサー率71% (49/69)
回答No.5

ORDER BY節でカラム2つ以上指定されている時、 どのようにカンマで区切られているのか、見てみましたか? >ORDER BY what DESC , ORDER BY something このような書き方はされていないはずです。

itmedia_search
質問者

補足

回答ありがとうございます。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)
回答No.4

もう十分に答えは出ていると思います。 いろいろ調べたり試してみましたか?

参考URL:
http://dev.mysql.com/doc/refman/4.1/ja/select.html
itmedia_search
質問者

お礼

回答ありがとうございます。 ローカルの環境にて何回も試しましたがエラーが出てしまいました。又、MySQLの公式サイトで調べたり、手持ちのリファレンスブックなどを手にとって調べていますが、エラーが出てしまいます。 よろしくお願いします。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

>ORDER BY~を2つ以上指定するにはどのようなSQL文にすればよいのでしょうか? カンマで区切る。

itmedia_search
質問者

補足

回答ありがとうございました。 教えていたあきましたとおりカンマで仕切りましたがエラーが出てしまいます。 SQLは以下の通りです。 SELECT * FROM TABLE WHERE okwave = 'hoge' , ORDER BY what DESC , ORDER BY something LIMIT "26", 10; よろしくお願いします。

  • driverII
  • ベストアンサー率27% (248/913)
回答No.1

あんまりPHPは詳しくないんですが・・(^^; 参考URLのやり方が参考になりませんか?

参考URL:
http://php.s3.to/man/function.mysql-data-seek.html

関連するQ&A