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

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句の条件値の確認や、ピボットテーブルの作成、日付の連続データの生成など、さまざまな場面で応用できるため、覚えておくと便利です。

  1. MySQLで変数を宣言する方法!SELECT・SETコマンドの使い方を実例付きで解説

    MySQLでは、SELECTコマンドとSETコマンドを使って変数を宣言・操作できます。変数を扱う際は、変数名の前に記号「@」を付けるのが基本のルールです。 MySQLにおける変数の種類と接頭辞の違い MySQLの変数は、接頭辞の付け方によって次のように区別されます。 @(1つ) … ユーザー定義変数 接頭辞なし … ローカル変数(ストアドプロシージャ内などでDECLARE文により宣言) @@(2つ) … サーバーシステム変数 本記事では、このうちユーザー定義変数の宣言方法と値の設定・更新手順を、実際の実行例とともに解説します。 変数を宣言する構文 変数を宣言するには、SELECTコマン

  2. MySQLで単一テーブルをバックアップする方法【mysqldumpの使い方を解説】

    MySQLデータベースから特定のテーブルだけをバックアップしたい場合、標準で付属しているダンプユーティリティ「mysqldump」を使うのが最も確実で一般的な方法です。なお、古いMySQL(バージョン5.0およびそれ以前)ではBACKUP TABLEステートメントによるテーブルバックアップも可能でしたが、この構文はすでに廃止されており、現行バージョンでは利用できません。本記事では、mysqldumpを使って単一テーブルのバックアップファイル(.sql形式)を作成する具体的な手順を解説します。ステップ1:コマンドプロンプトを起動するまず、ショートカットキーでコマンドプロンプト(cmd)を開きます