根据带参数的select(唯一键)从另一个表插入值

时间:2016-07-14 08:41:05

标签: sql-server sql-server-2008 sql-update updates insert-update

我已添加到现有的table1新列(col7)。结构如下图所示。以下是生成表的SQL语句:

select year, month, quater, col4, col5, col6, col7 from table1

enter image description here

基于table2,我想将值更新为table1中的col7(将所有值从table2插入table1)。

我的唯一密钥是:year-month-quater-col4-col5-col6

这是table2的结构: enter image description here

在此更新之前我没有做过。请你帮忙怎么做? 谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用以下查询

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

请参阅以下链接 SQL Server - inner join when updating

答案 1 :(得分:1)

如果你在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