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

SQLのユーザー定義変数を使って最大試験日を取得する方法

MySQLでは、ユーザー定義変数とSELECT ... INTO構文を組み合わせることで、テーブル内の最大試験日を変数に格納できます。基本となる構文は以下のとおりです。

select date(max(yourColumnName)) into @yourVariableName from yourTableName;

この構文を実際に理解するために、まずサンプルテーブルを作成していきましょう。

テーブルの作成

試験日を格納するテーブル「DemoTable2001」を作成します。

mysql> create table DemoTable2001
(
    ExamDate date
);
Query OK, 0 rows affected (0.60 sec)

テストデータの挿入

次に、INSERTコマンドを使って複数のレコードを挿入します。

mysql> insert into DemoTable2001 values('2019-01-10');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable2001 values('2018-12-31');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable2001 values('2018-11-18');
Query OK, 1 row affected (0.39 sec)
mysql> insert into DemoTable2001 values('2019-07-25');
Query OK, 1 row affected (0.13 sec)

登録データの確認

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

mysql> select * from DemoTable2001;

実行すると、以下のような結果が表示されます。

+------------+
| ExamDate   |
+------------+
| 2019-01-10 |
| 2018-12-31 |
| 2018-11-18 |
| 2019-07-25 |
+------------+
4 rows in set (0.00 sec)

ユーザー定義変数で最大日付を取得する

それでは、最大の試験日を取得するクエリを実行します。まず、ユーザー定義変数をSET文で初期化します。

mysql> set @comingExamDate:=null;
Query OK, 0 rows affected (0.00 sec)
mysql> select date(max(ExamDate)) into @comingExamDate from DemoTable2001;
Query OK, 1 row affected (0.00 sec)
mysql> select @comingExamDate;

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

+------------------+
| @comingExamDate  |
+------------------+
| 2019-07-25       |
+------------------+
1 row in set (0.00 sec)

このように、MAX()関数で取得した最大日付をSELECT ... INTOでユーザー定義変数に格納すれば、後続の処理や別のクエリ内でその値を再利用できます。変数名の先頭に@を付けるのがユーザー定義変数のルールなので、覚えておくと便利です。

  1. SQLのユーザー定義変数で増分値を設定し、複数のタイムスタンプ値をまとめてインクリメントする方法

    MySQLでは、増分値をユーザー定義変数(セッション変数)に設定しておくことで、複数のタイムスタンプ値をまとめて指定秒数だけ進めることができます。ここでは「yourValue」が増分値に相当します。変数を設定した後、UPDATE文とINTERVAL句を組み合わせてカラムの値を更新します。基本構文まず、SET文でユーザー定義変数に増分値を代入し、続いてUPDATE文でタイムスタンプ型のカラムを更新します。set @anyVariableName := yourValue;update yourTableName set yourColumnName = yourColumnName + inte

  2. MySQLで日付から曜日名を取得する方法(DAYNAME関数の使い方)

    MySQLで日付に対応する曜日名を取得するには?MySQLで日付データから曜日名(Sunday、Mondayなど)を取得したい場合は、DAYNAME()関数を使用します。この記事では、実際にテーブルを作成し、DAYNAME()関数を使って曜日名を取得する手順を解説します。1. テーブルを作成するまず、出荷日(ShippingDate)を格納するテーブルを作成しましょう。mysql> create table DemoTable1954 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコー