SQL 使用JOIN的SQL UPDATE

SQL 使用JOIN的SQL UPDATE

SQL UPDATE JOIN(SQL UPDATE的JOIN) 意味着我们将使用另一个表和JOIN条件来更新一个表。

让我们以客户表为例。我有一个更新了的客户表,其中包含了来自另一个源系统的最新客户数据。我想要使用最新数据更新客户表。在这种情况下,我将在目标表和源表之间执行JOIN,并使用客户ID作为JOIN条件。

让我们看一下带有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语句中使用多个表

让我们先看两个表,表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
ID Col 1 Col 2 Col 3
1 1 11 First
2 11 12 Second
3 21 13 Third
4 31 14 Fourth
ID Col 1 Col 2 Col 3
1 1 21 Two-One
2 11 22 Two-Two
3 21 23 Two-Three
4 31 24 Two-Four

我们的要求是,我们有一个表2,其中有两行,其中Col 1为21和31。我们希望将表2中的值更新到表1中,对于Col 1为21和31的行。

我们还希望仅更新Col 2和Col 3的值。

最简单和常见的方法是在更新语句中使用join子句,并在更新语句中使用多个表。

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中查询

ID Col 1 Col 2 Col 3
1 1 11 First
2 11 12 Second
3 21 23 Two-Three
4 31 24 Two-Four
ID Col 1 Col 2 Col 3
1 1 21 First
2 11 22 Second
3 21 23 Two-Three
4 31 24 Two-Four

在这里我们可以看到在update语句中使用了join子句。我们通过使用join子句将两个表合并在一起。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程