MySQLでクエリの実行結果を変数に代入する方法をわかりやすく解説
MySQLでクエリ結果を変数に代入する基本
MySQLでは、@変数名 の形式でユーザー定義変数を使用することで、クエリの実行結果を変数に格納できます。代入には :=(代入演算子)を使い、SELECT文の中で直接値を取得するのが一般的な方法です。
この記事では、実際にテーブルを作成し、クエリ結果を変数に代入するまでの一連の手順をサンプルコード付きで紹介します。
1. サンプルテーブルを作成する
まず、以下のようにCREATE TABLE文でテーブルを作成します。
mysql> create table DemoTable1864
(
Id int,
FirstName varchar(20),
LastName varchar(20)
);
Query OK, 0 rows affected (0.00 sec)2. テーブルにレコードを挿入する
次に、INSERT文を使ってサンプルデータを登録します。
mysql> insert into DemoTable1864 values(101,'Chris','Brown'); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1864 values(102,'David','Miller'); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1864 values(103,'Adam','Smith'); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1864 values(104,'John','Doe'); Query OK, 1 row affected (0.00 sec)
3. 登録したデータを確認する
SELECT文ですべてのレコードを表示して、データが正しく登録されているか確認しましょう。
mysql> select * from DemoTable1864;
実行すると、次のような結果が出力されます。
+------+-----------+----------+ | Id | FirstName | LastName | +------+-----------+----------+ | 101 | Chris | Brown | | 102 | David | Miller | | 103 | Adam | Smith | | 104 | John | Doe | +------+-----------+----------+ 4 rows in set (0.00 sec)
4. クエリ結果を変数に代入する
ここが本題です。@fName と @lName という2つのユーザー定義変数を用意し、:= を使ってFirstNameとLastNameの値をそれぞれ代入します。
mysql> select @fName:=FirstName,@lName:=LastName
from DemoTable1864
where Id=103;実行結果は以下の通りです。Id=103のレコードに対応する値が変数に格納されていることがわかります。
+-------------------+------------------+ | @fName:=FirstName | @lName:=LastName | +-------------------+------------------+ | Adam | Smith | +-------------------+------------------+ 1 row in set (0.00 sec)
代入した変数の値を確認する方法
変数に格納された値は、あらためてSELECT文だけで参照できます。
mysql> select @fName, @lName;
これにより「Adam」「Smith」が出力され、変数への代入が正しく行われたことを確認できます。
補足:SET文を使った代入との違い
ユーザー定義変数への代入は、SET @name = '値'; のようにSET文でも可能ですが、クエリの実行結果を動的に代入したい場合は、本記事のようにSELECT文内で := を使う方法が便利です。なお、MySQL 8.0以降では := を使った代入は非推奨とされており、代わりにウィンドウ関数やサブクエリと組み合わせた方法が推奨される場合もあります。用途に応じて使い分けるとよいでしょう。
-
MySQLで数値のクエリ結果を分割する方法【CONCAT関数の活用】
MySQLで数値のクエリ結果を分割したい場合、CONCAT()関数を使用すると簡単に実現できます。この記事では、実際にテーブルを作成し、数値の先頭1桁と残りの桁を「/」で区切って表示する方法を、具体的なサンプルコードとともに解説します。1. サンプルテーブルを作成するまずは動作確認用のテーブルを作成しましょう。ここでは「StudentId」というint型カラムを持つテーブルを用意します。mysql> create table DemoTable ( StudentId int ); Query OK, 0 rows affected (0.68 sec)2. テー
-
MySQLでSELECTクエリの結果を並べ替える方法|ORDER BY句の基本と実践例
データベース操作では、テーブルから特定のデータや行を抽出することが日常的によくあります。通常、SELECT文で取得した行はテーブル内に格納されている順序で返されますが、場合によっては、特定の列を基準にして昇順または降順で並べ替えた結果を取得したいこともあるでしょう。そんなときに活躍するのが「ORDER BY」句です。以下で具体的な使い方を見ていきましょう。例えば、「name」フィールドを含む複数のカラムを持つテーブルがあるとします。テーブルからすべての行を取得したいけれど、名前のアルファベット順に並べ替えた状態で結果を受け取りたい——こうしたケースでは、ORDER BY句を使って「name」フ