SQL 更新結合 別のテーブルと結合条件を使用して 1 つのテーブルを更新することを意味します。
顧客テーブルの例を見てみましょう。別のソース システムからの最新の顧客の詳細を含む顧客テーブルを更新しました。顧客テーブルを最新のデータで更新したいと考えています。このような場合は、顧客 ID の結合を使用して、ターゲット テーブルとソース テーブルの間の結合を実行します。
見てみましょう 構文 JOIN ステートメントを使用した SQL UPDATE クエリの。
UPDATE customer_table INNER JOIN Customer_table ON customer_table.rel_cust_name = customer_table.cust_id SET customer_table.rel_cust_name = customer_table.cust_name
JOINを使用したSQL UPDATEステートメントで複数のテーブルを使用する方法
2 つのテーブル、テーブル 1 とテーブル 2 を考えてみましょう。
テーブル1の作成
CREATE TABLE table1 (column1 INT, column2 INT, column3 VARCHAR (100)) INSERT INTO table1 (col1, col2, col3) SELECT 1, 11, 'FIRST' UNION ALL SELECT 11,12, 'SECOND' UNION ALL SELECT 21, 13, 'THIRD' UNION ALL SELECT 31, 14, 'FOURTH'
テーブル2の作成
CREATE TABLE table2 (column1 INT, column2 INT, column3 VARCHAR (100)) INSERT INTO table2 (col1, col2, col3) SELECT 1, 21, 'TWO-ONE' UNION ALL SELECT 11, 22, 'TWO-TWO' UNION ALL SELECT 21, 23, 'TWO-THREE' UNION ALL SELECT 31, 24, 'TWO-FOUR'
次に、表の内容を確認します。
SELECT * FROM table_1
SELECT * FROM table_2
列 1 | 列 2 | 列 3 | |
---|---|---|---|
1 | 1 | 十一 | 初め |
2 | 十一 | 12 | 2番 |
3 | 21 | 13 | 三番目 |
4 | 31 | 14 | 第4 |
列 1 | 列 2 | 列 3 | |
---|---|---|---|
1 | 1 | 21 | ツーワン |
2 | 十一 | 22 | ツーツー |
3 | 21 | 23 | ツー・スリー |
4 | 31 | 24 | 2-4 |
要件は、列 1 が 21 と 31 である 2 つの行を持つテーブル 2 があることです。列 1 が 21 と 31 である行の値をテーブル 2 からテーブル 1 に更新したいと考えています。
Col 2 と Col 3 の値のみも更新したいと考えています。
最も簡単で一般的な方法は、update ステートメントで join 句を使用し、update ステートメントで複数のテーブルを使用することです。
UPDATE table 1 SET Col 2 = t2.Col2, Col 3 = t2.Col3 FROM table1 t1 INNER JOIN table 2 t2 ON t1.Col1 = t2.col1 WHERE t1.Col1 IN (21,31)
テーブルの内容を確認してください
表 1 から選択
表 2 から選択
列 1 | 列 2 | 列 3 | |
---|---|---|---|
1 | 1 | 十一 | 初め |
2 | 十一 | 12 | 2番 |
3 | 21 | 23 | ツー・スリー |
4 | 31 | 24 | 2-4 |
列 1 | 列 2 | 列 3 | |
---|---|---|---|
1 | 1 | 21 | 初め |
2 | 十一 | 22 | 2番 |
3 | 21 | 23 | ツー・スリー |
4 | 31 | 24 | 2-4 |
ここでは、update ステートメントで join 句を使用していることがわかります。 join 句を使用して 2 つのテーブルをマージしました。