MySQLでカンマ区切りのリストをテーブルとして扱う方法(UNION ALL活用術)
MySQLでは、UNION ALLを使うことで、カンマ区切りの値のリストをあたかもテーブルのように扱うことができます。一時的なテーブルを作成することなく、数値や文字列のリストを結果セットとして取得できるため、テストデータの確認やクエリの検証などに便利です。
UNION ALLを使った基本的な方法
UNION ALLは複数のSELECT文の結果を結合する構文です。各SELECT文で単一の値を返し、それらを連結することで、リストをテーブル形式に変換できます。
例えば、10、20、30、40、50というリストをテーブルとして取得するには、以下のクエリを実行します。
mysql> select 10 Number UNION ALL select 20 Number UNION ALL select 30 Number UNION ALL select 40 Number UNION ALL select 50 Number;
実行結果
+--------+ | Number | +--------+ | 10 | | 20 | | 30 | | 40 | | 50 | +--------+ 5 rows in set (0.00 sec)
このように、5つの値が1列のテーブル形式で出力されました。最初のSELECT文で指定した「Number」がカラム名として使用されています。
別の例:短いリストの場合
もう一つ例を見てみましょう。1、2、3というリストをテーブルとして取得するには、以下のクエリを使用します。
mysql> SELECT 1 a UNION ALL SELECT 2 a UNION ALL SELECT 3 a;
実行結果
+---+ | a | +---+ | 1 | | 2 | | 3 | +---+ 3 rows in set (0.00 sec)
UNION ALLとUNIONの違い
なお、UNION ALLではなくUNIONを使用すると、重複する行が自動的に削除されます。リスト内に同じ値が複数回現れる可能性がある場合は、重複を保持できるUNION ALLを使用するように注意してください。
この手法は、IN句の条件値の確認や、ピボットテーブルの作成、日付の連続データの生成など、さまざまな場面で応用できるため、覚えておくと便利です。
-
MySQLで変数を宣言する方法!SELECT・SETコマンドの使い方を実例付きで解説
MySQLでは、SELECTコマンドとSETコマンドを使って変数を宣言・操作できます。変数を扱う際は、変数名の前に記号「@」を付けるのが基本のルールです。 MySQLにおける変数の種類と接頭辞の違い MySQLの変数は、接頭辞の付け方によって次のように区別されます。 @(1つ) … ユーザー定義変数 接頭辞なし … ローカル変数(ストアドプロシージャ内などでDECLARE文により宣言) @@(2つ) … サーバーシステム変数 本記事では、このうちユーザー定義変数の宣言方法と値の設定・更新手順を、実際の実行例とともに解説します。 変数を宣言する構文 変数を宣言するには、SELECTコマン
-
MySQLで単一テーブルをバックアップする方法【mysqldumpの使い方を解説】
MySQLデータベースから特定のテーブルだけをバックアップしたい場合、標準で付属しているダンプユーティリティ「mysqldump」を使うのが最も確実で一般的な方法です。なお、古いMySQL(バージョン5.0およびそれ以前)ではBACKUP TABLEステートメントによるテーブルバックアップも可能でしたが、この構文はすでに廃止されており、現行バージョンでは利用できません。本記事では、mysqldumpを使って単一テーブルのバックアップファイル(.sql形式)を作成する具体的な手順を解説します。ステップ1:コマンドプロンプトを起動するまず、ショートカットキーでコマンドプロンプト(cmd)を開きます