ユーザー定義変数にSQLの結果を格納する方法

ユーザー定義変数を利用すると、使い回ししやすいクエリを作成することができます。例えば、複数箇所で同じ値を利用しているクエリがあれば、変数を利用して1箇所で値を調整することができます。主な使い方を確認します。

ユーザー定義変数

同一セッションでのみ利用できる変数です。そのため、他のクライアントが利用することはできません。

変数を作る方法

SET文を利用して定義するには以下のようにします。

SET @var_name = 'abcdef';

SQLの結果を変数に格納したい場合 := を利用します。

SELECT @max_post_id := `id` 
FROM posts 
ORDER BY id DESC
LIMIT 1;

変数を参照する方法

以下のように、作成した変数をそのまま参照できます。

mysql> SET @var_name = 'abcdef';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @var_name;
+-----------+
| @var_name |
+-----------+
| abcdef    |
+-----------+
1 row in set (0.00 sec)
mysql> SELECT @max_post_id := `id` 
    -> FROM posts 
    -> ORDER BY id DESC
    -> LIMIT 1;
+----------------------+
| @max_post_id := `id` |
+----------------------+
|                    5 |
+----------------------+
1 row in set (0.00 sec)

mysql> SELECT @max_post_id;
+--------------+
| @max_post_id |
+--------------+
|            5 |
+--------------+
1 row in set (0.00 sec)

mysql> SELECT @max_post_id + 3;
+------------------+
| @max_post_id + 3 |
+------------------+
|                8 |
+------------------+
1 row in set (0.00 sec)

参考

https://dev.mysql.com/doc/refman/5.6/ja/user-variables.html

わくわくBank.
フリーランスのエンジニアとして活動してます。ここでは、ソフトウェア開発で必要とされる技術、用語、概念を整理しています。