【SQL】最新の行を5件だけ取得する方法

プログラミング

Webサイトを制作していると次のような場面遭遇する時がありませんか?

  • 最新記事のタイトルを5件だけ表示させたい
  • 最新の質問を10件だけ表示させたい
  • 最新の動画を表示させたい
  • 直近5件のデータを計算に使いたい

このような時は、データベースからSQLで最新の行(レコード)を取得することで解決できることがあります。

最新の行を5件だけ取得するSQL文

最新の行を5件だけ取得するSQL文は次のようになります。

SELECT * FROM テーブル名 ORDER BY 列名 DESC LIMIT 5;

テーブル名には、データを取得してきたいテーブル名を書きます。列名には日付が設定されている列の名前を書きます。limitのあとに続く”5″は取得する件数を表しています

3件だけ取りたい場合は「LIMIT 3」のように書きます。

具体例

例えば、「ブログ記事」という名前のテーブルがあったとします。このテーブルは次のような構造になっています。

投稿日をもとに、このテーブルから最新の行を3件だけ取得してみたいと思います。SQL文は次のようになります。

SELECT * FROM ブログ記事 ORDER BY 投稿日 DESC LIMIT 3;

次のように、最近投稿された3つの記事に関連する行が取得できました。

最新の行を数件だけ古い順(昇順)で取得

ここまでのやり方で、最新の行を取得すると、取得された行は新しい順に並びます。

最新の行を、古い順になるように取得する

一方で、最新の行を数行取得したいけれど、その行自体は古い順になるように取得したい場合があるかもしれません。

そのような場合は、次のようなSQL文で取得できます。

SELECT * FROM (SELECT * FROM ブログ記事 ORDER BY 投稿日 DESC LIMIT 3) AS A ORDER BY 投稿日 ASC;

コメント

タイトルとURLをコピーしました