MySQL 中 UPDATE JOIN 的使用
Preet Sanghavi
2023年1月3日
MySQL
MySQL Join
MySQL Update
本教程将介绍如何在 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。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Preet Sanghavi
