MySQLでSELECT CASEの結果を変数に保存する方法
MySQLでは、SELECT CASE文の実行結果をユーザー定義変数に格納することができます。この記事では、実際にテーブルを作成し、CASE文の評価結果をINTO @変数名を使って変数へ保存する手順を解説します。
1. サンプルテーブルの作成
まず、2つの整数カラムを持つテーブルを作成します。
mysql> create table DemoTable
-> (
-> Num1 int,
-> Num2 int
-> );
Query OK, 0 rows affected (0.65 sec)
2. レコードの挿入
INSERT文を使って、サンプルデータを挿入します。ここでは「10」と「30」という2つの値を登録しました。
mysql> insert into DemoTable values(10,30);
Query OK, 1 row affected (0.11 sec)
3. テーブル内容の確認
SELECT文ですべてのレコードを表示して、データが正しく登録されているか確認しましょう。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+------+------++------+------++------+------++------+------+
4. SELECT CASEの結果を変数に保存する
ここがこの記事のポイントです。CASE式でNum1とNum2を比較し、その結果をINTO @sによってユーザー変数@sに格納します。
mysql> select case
-> WHEN Num1=Num2 THEN "Equal"
-> WHEN Num1 > Num2 THEN "Greater"
-> WHEN Num1 < Num2 THEN "Lower" end
-> from DemoTable
-> into @s;
Query OK, 1 row affected (0.01 sec)
このクエリでは、以下のロジックで評価が行われます。
- Num1 = Num2 の場合: 「Equal(等しい)」を返す
- Num1 > Num2 の場合: 「Greater(大きい)」を返す
- Num1 < Num2 の場合: 「Lower(小さい)」を返す
今回の例では、Num1が10、Num2が30なので、「10 < 30」の条件に合致し、結果として「Lower」が変数に保存されます。
5. 変数の値を確認する
変数@sに正しく値が格納されたか、確認してみましょう。
mysql> select @s;
実行結果は以下のとおりです。
+-------++-------++-------++-------+
まとめ
SELECT ... INTO @変数名構文を使えば、CASE式の評価結果だけでなく、任意のクエリ結果を簡単にユーザー変数へ保存できます。ストアドプロシージャや複雑な条件分岐処理の中で後から値を参照したい場合に非常に便利なテクニックなので、ぜひ活用してください。
-
SELECTでテーブル全体を返すMySQLストアドプロシージャの作成方法
MySQLでは、ストアドプロシージャ内でSELECT文を実行することで、引数で渡した条件に一致するレコード(この例ではテーブル全体)を結果として返すことができます。ここでは、テーブルの作成からプロシージャの呼び出しまで、手順を追って解説します。 1. サンプルテーブルの作成 まず、テーブルを作成します。 mysql> create table DemoTable1971 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, &n
-
MySQLのSELECT文をカスタム変数に設定する方法
この記事では、MySQLでSELECT文(クエリ)の結果をカスタム変数(ユーザー定義変数)に設定する方法を解説します。まずサンプル用のテーブルを作成してデータを挿入し、その後SET句と「@」から始まる変数を使ってクエリを変数に格納する手順を、実際の実行例とともに見ていきましょう。 1. テーブルを作成する 最初に、以下のコマンドでテーブルを作成します。 mysql> create table DemoTable2013 -> ( -> Name varchar(20)