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

MySQLで日付レコードを並べ替え、ORDER BYとLIMITで2番目のレコードを取得する方法

MySQLでレコードを並べ替えるには ORDER BY 句を使用し、並べ替えた結果の中から特定の順位のレコードだけを取得したい場合は、LIMIT 句にオフセット(取得開始位置)を組み合わせます。ここでは、出荷日を含む顧客テーブルを例に、具体的な手順を解説します。

1. サンプルテーブルを作成する

まず、顧客ID(自動採番の主キー)、顧客名、出荷日の3つのカラムを持つテーブルを作成します。

mysql> create table DemoTable1417
    -> (
    -> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> CustomerName varchar(20),
    -> ShippingDate date
    -> );
Query OK, 0 rows affected (1.10 sec)

2. レコードを挿入する

続いて、INSERT文でサンプルデータを登録します。

mysql> insert into DemoTable1417(CustomerName,ShippingDate) values('Chris','2019-01-21');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1417(CustomerName,ShippingDate) values('David','2018-12-01');
Query OK, 1 row affected (0.55 sec)
mysql> insert into DemoTable1417(CustomerName,ShippingDate) values('Carol','2019-09-28');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1417(CustomerName,ShippingDate) values('Sam','2019-08-29');
Query OK, 1 row affected (0.17 sec)

3. 登録したレコードを確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select * from DemoTable1417;

実行結果は以下のとおりです。

+------------+--------------+--------------+
| CustomerId | CustomerName | ShippingDate |
+------------+--------------+--------------+
|          1 | Chris        | 2019-01-21   |
|          2 | David        | 2018-12-01   |
|          3 | Carol        | 2019-09-28   |
|          4 | Sam          | 2019-08-29   |
+------------+--------------+--------------+
4 rows in set (0.00 sec)

4. 並べ替えた結果から目的のレコードを取得する

以下が、並べ替え後のレコードから特定の1件を取得するクエリです。

mysql> select CustomerName,ShippingDate from DemoTable1417 order by CustomerId limit 2,1;

実行結果:

+--------------+--------------+
| CustomerName | ShippingDate |
+--------------+--------------+
| Carol        | 2019-09-28   |
+--------------+--------------+
1 row in set (0.00 sec)

LIMIT 句は「LIMIT 取得開始位置(オフセット), 最大取得件数」という形式で指定します。オフセットは0から始まるため、「limit 2,1」は先頭の2件をスキップし、その次の1件を返します。同じ要領で、2番目のレコードを取得したい場合は「limit 1,1」、1番目なら「limit 0,1」と指定します。このように ORDER BYLIMIT を組み合わせることで、並べ替え後の任意の位置にあるレコードを簡単に取り出すことができます。

  1. MySQLで特定の日付のレコード数をカウントする方法

    MySQLでは、COUNT(*)関数とWHERE句を組み合わせることで、特定の日付に該当するレコードの件数を簡単に取得できます。この記事では、サンプルテーブルを作成し、指定した日付のデータ件数をカウントする手順を順番に解説します。 1. サンプルテーブルの作成 まず、日付型(DATE)のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1946     (     ShippingDate date     ); Quer

  2. MySQLで現在の日付と翌日のレコードを条件に特定の列を抽出する方法

    MySQLでは、CURDATE()関数を使うことで、現在の日付やその翌日に該当するレコードを簡単に抽出できます。この記事では、実際のサンプルを使いながら、現在の日付と翌日の出荷日を持つレコードから特定の列を選択して取得する方法を解説します。 1. 現在の日付を確認する まず、curdate()関数で現在の日付を取得してみましょう。 mysql> select curdate(); 実行すると、以下のような結果が表示されます。 +------------+ | curdate() | +------------+ | 2019-12-15 | +------------+ 1 row