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

MySQLで2つの列のデータを入れ替える方法(ユーザー変数を使った実践テクニック)

MySQLでは、ユーザー定義変数を活用することで、2つの列(カラム)の値を一時的なテーブルや追加の列を作らずに簡単に入れ替えることができます。この記事では、実際にテーブルを作成し、Name1Name2という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 = Name2Name1Name2の値を上書きします。
  • 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)

Name1Name2の値が完全に入れ替わっていることがわかります。この手法は、中間テーブルを作成したり、アプリケーション側で処理したりする必要がないため、シンプルかつ効率的な方法として広く使われています。

  1. MySQLで2つの日付の間を検索する方法|BETWEEN句の使い方を実例で解説

    MySQLで2つの日付の間を検索するには?MySQLで特定の2つの日付の間に該当するレコードを検索したい場合は、BETWEENキーワードを使用します。本記事では、サンプルテーブルの作成からデータの挿入、そしてBETWEEN句を使った日付範囲検索まで、具体的な手順を順番に解説していきます。1. サンプルテーブルの作成まず、顧客名とオファー期間(開始日・終了日)を管理するテーブルを作成しましょう。mysql> create table DemoTable1456    -> (    -> Custo

  2. MySQLで単語間のスペースを削除する方法:REPLACE関数の使い方

    MySQLで単語間のスペースを削除するには?MySQLで文字列内の特定のスペースを削除したい場合は、REPLACE()関数を使用します。REPLACE()関数は、指定した文字列を別の文字列に置き換えることができるため、スペースの削除にも活用できます。ここでは、「This is MySQL」のような文字列から「is」の後のスペースを削除する例を通して、具体的な手順を解説します。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable1506  -> (  -> Title text  -> );Query OK