MySQL での UPDATE JOIN の使用
このチュートリアルでは、MySQL データベースで UPDATE JOIN
ステートメントを使用する方法を紹介します。
通常、JOIN
を使用して、他のテーブルに同様の行がある場合とない場合がある特定のテーブルの行を調べます。UPDATE
ステートメントと一緒に JOIN
句を使用して、複数のテーブル更新を実装できます。
MySQL UPDATE JOIN
の基本的な構文は次のように説明できます。
UPDATE Table_1, Table_2,
[INNER JOIN] Table_1 ON Table_1.Column_1 = Table_2. Column_1
SET Table_1.Column_2 = Table_2.Column_2,
Table_2.Column_3 = expression
WHERE condition
上記の構文は、MySQL の特定のテーブルに対して次のように機能します。
- 作業を開始するには、
table_1
というメインテーブルと、メインテーブルと結合するテーブルをtable_2
として指定します。UPDATE
句に記載されているテーブルが更新され、UPDATE
句の後に記載されていないテーブルのデータは変更されません。 - それを実行したら、使用する結合のタイプについて言及する必要があります。上記の構文では、
INNER
結合を使用しています。この結合は、UPDATE
句の直後に行う必要があります。 - 更新する列に値を指定した後、更新の特定の条件を指定するための
WHERE
句について説明します。
この方法を使用するもう 1つの方法があり、次のように説明できます。
UPDATE Table_1, Table_2
SET Table_1.column_2 = Table_2.column_2,
Table_2.column_3 = expr
WHERE Table_1.column_1 = Table_2.column_1 AND condition
始める前に、使用する 2つのテーブルを作成しましょう。これらのテーブルを student_details
および marks
と呼びます。これらのテーブルは、次のコードで作成できます。
CREATE TABLE marks (
performance INT(11) NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY (performance)
);
CREATE TABLE student_details (
stu_id INT(11) NOT NULL AUTO_INCREMENT,
stu_name VARCHAR(255) NOT NULL,
performance INT(11) DEFAULT NULL,
total FLOAT DEFAULT NULL,
PRIMARY KEY (emp_id),
CONSTRAINT fk_performance FOREIGN KEY (performance)
REFERENCES marks (performance)
);
INSERT INTO marks(performance,percentage)
VALUES(1,0),
(2,0.01),
(3,0.03),
(4,0.05),
(5,0.08);
INSERT INTO student_details(stu_name,performance,total)
VALUES('Preet Sanghavi', 1, 50000),
('Joe Sand', 3, 65000),
('Su Greens', 4, 75000),
('Gray Dellop', 5, 125000),
('Neon Jonty', 3, 85000),
('Peter Foe', 2, 45000),
('Little Wayne', 3, 55000);
student_details
テーブルを視覚化するために、次のコードを使用します。
SELECT * FROM student_details;
上記のコードは次の出力を提供します。
stu_id stu_name stu_performance total
1 Preet Sanghavi 1 50000
2 Joe Sand 3 65000
3 Su Greens 4 75000
4 Gray Dellop 5 125000
5 Neon Jonty 3 85000
6 Peter Foe 2 45000
7 Little Wayne 3 55000
同様に、marks
テーブルを視覚化できます。
SELECT * FROM marks;
上記のコードは次の出力を提供します。
performance percentage
1 0
2 0.01
3 0.03
4 0.05
5 0.08
上記のコードブロックからわかるように、パーセンテージ値は marks
テーブルにあり、UPDATE JOIN
と INNER JOIN
をメイン結合として使用して、各学生の total
を調整する必要があります。marks
テーブルの percentage
と performance
の値に基づく student_details
テーブル。
student_details
と marks
の間のブリッジは performance
列であることに注意することが重要です。次に、UPDATE JOIN
ステートメントの動作を見てみましょう。
MySQL で UPDATE JOIN
ステートメントを使用する
次のクエリを使用して、上記のように更新操作を実行できます。
UPDATE student_details
INNER JOIN
marks ON student_details.performance = marks.performance
SET
total = total + total * percentage;
ここで、student_details
テーブルは、total
の値を更新する必要があるメインテーブルです。
UPDATE
ステートメントの WHERE
句を削除するため、student_details
テーブルのすべてのレコードが SET
条件に基づいて変更されます。上記のクエリを出力すると、次の結果が得られます。
stu_id stu_name stu_performance total
1 Preet Sanghavi 1 50000
2 Joe Sand 3 66950
3 Su Greens 4 78750
4 Gray Dellop 5 135000
5 Neon Jonty 3 87550
6 Peter Foe 2 45450
7 Little Wayne 3 56650
上記のコードブロックでわかるように、各生徒の total
は、marks
テーブルの performance
に基づいて更新されます。
したがって、上記の手法を使用すると、MySQL で Update Join
を効率的に使用できます。