MySQL 中 UPDATE JOIN 的使用
Preet Sanghavi
2023年1月3日
2022年5月13日
本教程將介紹如何在 MySQL 資料庫中使用 UPDATE JOIN
語句。
我們通常使用 joins
來遍歷特定表中的行,這些行在其他表中有或可能沒有類似的行。我們可以在 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
子句來指定更新的特定條件。
還有另一種使用此方法的方法,如下所示。
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
在開始之前,讓我們建立兩個要使用的表。我們將這些表稱為 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
student_details
表基於 marks
表中 percentage
和 performance
的值。
注意
需要注意的是,
student_details
和 marks
這兩個表之間的橋樑是 performance
列。現在讓我們看看 UPDATE JOIN
語句的實際作用。
在 MySQL 中使用 UPDATE JOIN
statement.in
我們可以使用以下查詢執行上述更新操作。
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
正如我們在上面的程式碼塊中看到的,每個學生的總分
是根據他/她在分數
表中的表現
更新的。
因此,藉助上述技術,我們可以有效地在 MySQL 中使用 Update Join
。
Author: Preet Sanghavi