MySQLで2つの列のデータを入れ替える方法(ユーザー変数を使った実践テクニック)
MySQLでは、ユーザー定義変数を活用することで、2つの列(カラム)の値を一時的なテーブルや追加の列を作らずに簡単に入れ替えることができます。この記事では、実際にテーブルを作成し、Name1とName2という2つの列のデータを入れ替える手順を順番に解説します。
1. テーブルの作成
まず、入れ替え用のサンプルテーブル「DemoTable」を作成します。
mysql> create table DemoTable
-> (
-> Name1 varchar(100),
-> Name2 varchar(100)
-> );
Query OK, 0 rows affected (0.58 sec)
2. サンプルデータの挿入
次に、INSERT文を使ってテスト用のレコードを挿入します。
mysql> insert into DemoTable values('John Smith','Chris Brown');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('David Miller','Jone Doe');
Query OK, 1 row affected (0.16 sec)3. 現在のデータを確認
SELECT文で全レコードを表示し、入れ替え前の状態を確認しておきましょう。
mysql> select *from DemoTable;
出力結果
+--------------+-------------+
| Name1 | Name2 |
+--------------+-------------+
| John Smith | Chris Brown |
| David Miller | Jone Doe |
+--------------+-------------+
2 rows in set (0.00 sec)
4. 列のデータを入れ替えるUPDATE文
ここがポイントです。以下のように、ユーザー変数@tmpNameを使ってName1の元の値を一時的に保存しながら、UPDATE文で2つの列の値を入れ替えます。
mysql> update DemoTable
-> SET Name1=(@tmpName:=Name1), Name1 = Name2, Name2 = @tmpName;
Query OK, 2 rows affected (0.13 sec)
Rows matched: 2 Changed: 2 Warnings: 0
仕組みの解説:
(@tmpName:=Name1)— 代入演算子:=を使い、更新前のName1の値を変数@tmpNameに退避させます。Name1 = Name2—Name1にName2の値を上書きします。Name2 = @tmpName— 変数に退避しておいた元のName1の値をName2に書き込みます。
このように、MySQLはSET句の式を左から順に評価するため、一時変数を介すことで安全に値をスワップできます。
5. 入れ替え後のデータを確認
もう一度SELECT文を実行して、結果を確認してみましょう。
mysql> select *from DemoTable;
出力結果
+-------------+--------------+
| Name1 | Name2 |
+-------------+--------------+
| Chris Brown | John Smith |
| Jone Doe | David Miller |
+-------------+--------------+
2 rows in set (0.00 sec)
Name1とName2の値が完全に入れ替わっていることがわかります。この手法は、中間テーブルを作成したり、アプリケーション側で処理したりする必要がないため、シンプルかつ効率的な方法として広く使われています。
-
MySQLで2つの日付の間を検索する方法|BETWEEN句の使い方を実例で解説
MySQLで2つの日付の間を検索するには?MySQLで特定の2つの日付の間に該当するレコードを検索したい場合は、BETWEENキーワードを使用します。本記事では、サンプルテーブルの作成からデータの挿入、そしてBETWEEN句を使った日付範囲検索まで、具体的な手順を順番に解説していきます。1. サンプルテーブルの作成まず、顧客名とオファー期間(開始日・終了日)を管理するテーブルを作成しましょう。mysql> create table DemoTable1456 -> ( -> Custo
-
MySQLで単語間のスペースを削除する方法:REPLACE関数の使い方
MySQLで単語間のスペースを削除するには?MySQLで文字列内の特定のスペースを削除したい場合は、REPLACE()関数を使用します。REPLACE()関数は、指定した文字列を別の文字列に置き換えることができるため、スペースの削除にも活用できます。ここでは、「This is MySQL」のような文字列から「is」の後のスペースを削除する例を通して、具体的な手順を解説します。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable1506 -> ( -> Title text -> );Query OK