【MySQL】別のテーブルのカラムを参照してカラムを更新する方法
別のMySQLテーブルのカラム値を参照しながら、現在のテーブルのカラムを更新したい場合には、JOIN(結合)の概念を利用します。ここでは、実際にテーブルを作成しながら、具体的な手順をわかりやすく解説していきます。
1つ目のテーブル(更新される側)を作成する
まず、更新対象となるテーブル「DemoTable1」を作成しましょう。
mysql> create table DemoTable1
-> (
-> Id int,
-> Name varchar(10)
-> );
Query OK, 0 rows affected (0.51 sec)
INSERTコマンドを使ってレコードを挿入します。
mysql> insert into DemoTable1 values(100,'Bob');
Query OK, 1 row affected (0.14 sec)
SELECT文ですべてのレコードを表示して確認してみます。
mysql> select * from DemoTable1;
実行結果は以下の通りです。
+------+------+ | Id | Name | +------+------+ | 100 | Bob | +------+------+ 1 row in set (0.00 sec)
2つ目のテーブル(参照元)を作成する
続いて、参照元となる2つ目のテーブル「DemoTable2」を作成します。
mysql> create table DemoTable2
-> (
-> Id int,
-> FirstName varchar(10)
-> );
Query OK, 0 rows affected (0.49 sec)
こちらにもINSERTコマンドでレコードを挿入しておきます。
mysql> insert into DemoTable2 values(100,'Adam');
Query OK, 1 row affected (0.12 sec)
SELECT文でテーブルの中身を確認しましょう。
mysql> select * from DemoTable2;
実行結果は以下の通りです。
+------+-----------+ | Id | FirstName | +------+-----------+ | 100 | Adam | +------+-----------+ 1 row in set (0.00 sec)
別テーブルのカラムを基にUPDATE文を実行する
それでは、DemoTable2の「FirstName」カラムの値を使って、DemoTable1の「Name」カラムを更新します。UPDATE文とJOINを組み合わせたクエリは以下のようになります。
mysql> update DemoTable1
-> join DemoTable2 on DemoTable1.Id=DemoTable2.Id
-> set DemoTable1.Name=DemoTable2.FirstName;
Query OK, 1 row affected (0.15 sec)
Rows matched: 1 Changed: 1 Warnings: 0
このクエリでは、両テーブルの「Id」カラムを結合条件として一致させ、その上で「DemoTable1.Name」に「DemoTable2.FirstName」の値を代入しています。基本構文は「UPDATE 対象テーブル JOIN 参照テーブル ON 結合条件 SET 更新内容」という形です。
更新結果の確認
最後に、1つ目のテーブルのレコードが正しく更新されているか確認しましょう。
mysql> select * from DemoTable1;
実行結果は以下の通りです。「Name」カラムが「Bob」から「Adam」に更新されていることがわかります。
+------+------+ | Id | Name | +------+------+ | 100 | Adam | +------+------+ 1 row in set (0.00 sec)
まとめ
UPDATE文とJOINを組み合わせれば、別テーブルの値を簡単に反映させることができます。大量データの一括更新や、マスターテーブルとのデータ同期などにも応用できる実用的なテクニックなので、ぜひ使い方をマスターしておきましょう。
-
JavaのPreparedStatementを使ってMySQLテーブルを更新する方法
JavaからMySQLのテーブルを更新するには、PreparedStatementを使用するのが一般的で安全な方法です。PreparedStatementを使うことで、SQLインジェクションを防ぎつつ、パラメータを動的に設定できます。この記事では、実際にテーブルを作成し、Javaプログラムからレコードを更新するまでの一連の手順を解説します。1. テーブルの作成まず、MySQLで更新用のテーブルを作成しましょう。mysql> create table DemoTable( Id int, FirstName varchar(40) ); Query OK, 0 rows a
-
【MySQL】別のテーブルのデータを参照してテーブルを更新する方法(UPDATE+JOIN)
MySQLでは、UPDATEコマンドとJOINを組み合わせることで、別のテーブルのデータを参照しながら、対象のテーブルを効率的に更新できます。本記事では、2つのテーブルを使った具体的なサンプルを通じて、その手順をわかりやすく解説します。 手順1:参照元のテーブルを作成する まず、氏名データを保持する1つ目のテーブル「demo54」を作成します。 mysql> create table demo54-> (-> firstName varchar(20),-> lastName varchar(20)-> );Query OK, 0 rows affected (