SQL Update Join 更新连接

一、SQL Update Join 更新连接  语句

SQL UPDATE JOIN意味着我们将使用另一个表和连接条件更新一个表。

让我们以客户表为例。我更新了包含来自另一个源系统的最新客户详细信息的客户表。我想用最新数据更新客户表。在这种情况下,我将使用客户 ID 上的连接来执行目标表和源表之间的连接。

让我们看看带有 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

Table1的数据 

  Col 1 Col 2 Col 3
1 1 11 First
2 11 12 Second
3 21 13 Third
4 31 14 Fourth

 Table2的数据

  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 的值。

最简单常用的方法是在update语句中使用join子句,在update语句中使用多个表。

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)  

查看两种表的数据如下:

Table1:

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

Table2:

  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 子句合并了两个表。

热门文章

优秀文章