基于 select 使用参数(唯一键)从另一个 table 插入值
Insert values from another table based on select with parameters (unique keys)
我在现有的 table1 列中添加了新列 (col7)。结构如下图所示。这是生成 table:
的 SQL 语句
select year, month, quater, col4, col5, col6, col7 from table1
基于 table2,我想将值更新到 table1 中的 col7(插入从 table2 到 table1 的所有值)。
我的唯一键是:year-month-quater-col4-col5-col6
这是 table2 的结构:
这次更新之前我没有做过。你能帮忙帮忙怎么做吗?
谢谢!
您可以使用以下查询
UPDATE T1
SET T1.Col7 = T2.Col7
FROM table1 T1
inner join table2 T2 on T1.Year = T2.Year AND T1.month = T2.month AND T1.quarter = T2.quarter AND T1.col4 = T2.col4 AND T1.col5= T2.col5 AND T1.col6 = T2.col6
参考下面link
SQL Server - inner join when updating
如果你在table2中有记录但在table1中丢失了那么你可以通过下面的代码插入到table1中,除了@arpan desai提供的更新代码外,你需要使用下面的代码来插入你丢失的记录
INSERT INTO TABLE1 SELECT * FROM
(SELECT T2.year,T2.month,T2.quarter,T2.COL4,T2.COL5,T2.COL6,T2.COL7 FROM TABLE2 T2
EXCEPT
SELECT T1.year,T1.month,T1.quarter,T1.COL4,T1.COL5,T1.COL6,T1.COL7 FROM TABLE1 T1) M
我在现有的 table1 列中添加了新列 (col7)。结构如下图所示。这是生成 table:
的 SQL 语句select year, month, quater, col4, col5, col6, col7 from table1
基于 table2,我想将值更新到 table1 中的 col7(插入从 table2 到 table1 的所有值)。
我的唯一键是:year-month-quater-col4-col5-col6
这是 table2 的结构:
这次更新之前我没有做过。你能帮忙帮忙怎么做吗? 谢谢!
您可以使用以下查询
UPDATE T1
SET T1.Col7 = T2.Col7
FROM table1 T1
inner join table2 T2 on T1.Year = T2.Year AND T1.month = T2.month AND T1.quarter = T2.quarter AND T1.col4 = T2.col4 AND T1.col5= T2.col5 AND T1.col6 = T2.col6
参考下面link SQL Server - inner join when updating
如果你在table2中有记录但在table1中丢失了那么你可以通过下面的代码插入到table1中,除了@arpan desai提供的更新代码外,你需要使用下面的代码来插入你丢失的记录
INSERT INTO TABLE1 SELECT * FROM
(SELECT T2.year,T2.month,T2.quarter,T2.COL4,T2.COL5,T2.COL6,T2.COL7 FROM TABLE2 T2
EXCEPT
SELECT T1.year,T1.month,T1.quarter,T1.COL4,T1.COL5,T1.COL6,T1.COL7 FROM TABLE1 T1) M