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

MySQLでSELECT文の結果をユーザー定義変数に格納する方法

MySQLにおけるユーザー定義変数とは

MySQLでは、先頭に「@」を付けた名前でユーザー定義変数を宣言し、利用することができます。SELECT文で取得した値を一時的に変数へ格納しておけば、後続のクエリで再利用できるため、複雑な処理を分割して書きたい場合などに非常に便利です。

基本構文

SELECT文の結果をユーザー定義変数に格納するには、INTO句を使用します。基本的な構文は以下の通りです。ここでは、@anyVariableNameがユーザー定義変数に相当します。

select yourColumnName into @anyVariableName from yourTableName where yourCondition;

実際の使用例

1. テーブルを作成する

まず、サンプル用のテーブルを作成しましょう。

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name varchar(100)
);
Query OK, 0 rows affected (0.73 sec)

2. レコードを挿入する

INSERTコマンドを使って、テーブルにいくつかのレコードを追加します。

mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(Name) values('Robert');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(Name) values('David');
Query OK, 1 row affected (0.10 sec)

3. テーブルの内容を確認する

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

mysql> select *from DemoTable;

このクエリを実行すると、次のような結果が出力されます。

+----+--------+
| Id | Name   |
+----+--------+
|  1 | Chris  |
|  2 | Robert |
|  3 | David  |
+----+--------+
3 rows in set (0.00 sec)

SELECT INTOでユーザー定義変数に値を格納する

それでは、本題である「SELECT INTOによるユーザー定義変数への値の格納」を実行してみましょう。以下のクエリでは、Id=3のレコードのNameカラムの値を、@FirstNameという変数に格納しています。

mysql> select Name into @FirstName from DemoTable where Id=3;
Query OK, 1 row affected (0.02 sec)

変数の値を確認する

格納された値を確認するには、変数をそのままSELECTします。

mysql> select @FirstName;

実行結果は以下の通りです。Id=3のレコードに対応する「David」が正しく変数に格納されていることがわかります。

+------------+
| @FirstName |
+------------+
| David      |
+------------+
1 row in set (0.00 sec)

まとめ

このように、MySQLでは「SELECT ... INTO @変数名」の形式を使うことで、クエリの実行結果を簡単にユーザー定義変数へ格納できます。なお、WHERE条件に該当する行が複数ある場合は、変数には最後に取得した行の値が格納される点に注意してください。条件を一意に特定するものにするか、LIMIT句を併用することをおすすめします。

  1. 【MySQL】ユーザー定義変数とIF関数・SELECT文を組み合わせてカスタムメッセージを表示する方法

    MySQLでは、ユーザー定義変数(@変数)とIF()関数、SELECT文を組み合わせることで、クエリの結果に応じたカスタムメッセージを簡単に表示できます。本記事では、サンプルテーブルを作成し、合計値の正負に応じて異なるメッセージを返す方法を順を追って解説します。1. サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable2008 ( Value int ); Query OK, 0 rows affected (10.59 sec)2. レコードの挿入次に、INSERTコマンドを使用してテーブルにレコードを挿入します。my

  2. MySQLのSELECT文をカスタム変数に設定する方法

    この記事では、MySQLでSELECT文(クエリ)の結果をカスタム変数(ユーザー定義変数)に設定する方法を解説します。まずサンプル用のテーブルを作成してデータを挿入し、その後SET句と「@」から始まる変数を使ってクエリを変数に格納する手順を、実際の実行例とともに見ていきましょう。 1. テーブルを作成する 最初に、以下のコマンドでテーブルを作成します。 mysql> create table DemoTable2013     -> (     -> Name varchar(20)