MySQL 中 UPDATE JOIN 的使用

Preet Sanghavi 2023年1月3日
MySQL 中 UPDATE JOIN 的使用

本教程將介紹如何在 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_detailsmarks。可以使用以下程式碼建立這些表。

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 JOININNER JOIN 作為我們的主連線來調整每個學生的 total student_details 表基於 marks 表中 percentageperformance 的值。

注意
需要注意的是,student_detailsmarks 這兩個表之間的橋樑是 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

作者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

相關文章 - MySQL Join