MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでIDが最も大きい行のみを表示する方法

テーブルの中から最も大きなIDを持つ行だけを取得したい場合、「ORDER BY Id DESC」で降順に並べ替えたうえで「LIMIT 1」を組み合わせることで実現できます。降順ソートの先頭、すなわちIDが最大のレコードを1件だけ取り出す仕組みです。

サンプルテーブルの作成

まずは動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable
(
    Id int,
    FirstName varchar(50)
);
Query OK, 0 rows affected (0.83 sec)

レコードの挿入

次に、insertコマンドを使って複数のレコードを登録します。

mysql> insert into DemoTable values(100,'Chris');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(110,'Robert');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(120,'Mike');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(115,'Bob');
Query OK, 1 row affected (0.14 sec)

すべてのレコードを確認する

select文ですべてのレコードを表示して、データの中身を確認しておきましょう。

mysql> select *from DemoTable;

上記のクエリを実行すると、以下のような結果が得られます。

+------+-----------+
| Id   | FirstName |
+------+-----------+
| 100  | Chris     |
| 110  | Robert    |
| 120  | Mike      |
| 115  | Bob       |
+------+-----------+
4 rows in set (0.00 sec)

IDが最大の行を取得するクエリ

ここからが本題です。「ORDER BY Id DESC」でIDを降順に並べ替え、「LIMIT 1」で先頭の1件のみを取得することで、IDが最も大きい行だけを表示できます。

mysql> select *from DemoTable order by Id DESC LIMIT 1;

実行結果は以下の通りです。ID「120」のMikeというレコード、つまり最も大きなIDを持つ行だけが正しく取得できています。

+------+-----------+
| Id   | FirstName |
+------+-----------+
| 120  | Mike      |
+------+-----------+
1 row in set (0.00 sec)

補足:MAX関数を使う方法

なお、IDの最大値そのものを知りたいだけであれば、「SELECT MAX(Id) FROM DemoTable」というようにMAX集計関数を使う方法もあります。ただし、この方法では他のカラム(FirstNameなど)の値は取得できません。行全体を丸ごと取り出したいケースでは、本記事で紹介した「ORDER BY 〜 DESC」と「LIMIT 1」の組み合わせが最もシンプルで便利です。

  1. MySQLでIN句に指定した値のみを任意の順序で表示する方法

    MySQLでIN句に指定した値のみを任意の順序で表示する方法MySQLでは、IN()とORDER BY句、さらにFIELD()関数を組み合わせることで、IN句内に指定した値だけを、希望する独自の順序で表示できます。通常のORDER BYは昇順・降順のソートしかできませんが、FIELD()関数を使えば自由に並び順を定義できるのがポイントです。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1986(Number int);Query OK, 0 rows affected (0.00 sec)次に、INSERTコマ

  2. MySQLで重複行を除外して1行だけ取得する方法(DISTINCTの使い方)

    MySQLで重複行から1行のみを返すには?MySQLのテーブルに同じ値を持つ重複行が存在する場合、DISTINCTキーワードを使うことで、重複を排除した一意な行だけを取得できます。この記事では、実際にテーブルを作成し、データを挿入したうえで、DISTINCTによる重複除去の手順を解説します。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1998 ( Name varchar(20) ); Query OK, 0 rows affected (0.61 sec)2. レコードを挿入するINSERTコマンドを