Sql server 基于“使用参数选择”(唯一键)插入另一个表中的值

Sql server 基于“使用参数选择”(唯一键)插入另一个表中的值,sql-server,sql-server-2008,sql-update,updates,insert-update,Sql Server,Sql Server 2008,Sql Update,Updates,Insert Update,我已经在现有的table1中添加了新列(col7)。结构如下图所示。下面是生成表的SQL语句: select year, month, quater, col4, col5, col6, col7 from table1 基于表2,我想将值更新到表1中的col7中(将表2中的所有值插入表1) 我的唯一键是:year-month-quater-col4-col5-col6 以下是表2的结构: 在此更新之前,我没有这样做。你能帮我怎么做吗? 谢谢大家! 您可以使用下面的查询 UPDATE T1

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

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

基于表2,我想将值更新到表1中的col7中(将表2中的所有值插入表1)

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

以下是表2的结构:

在此更新之前,我没有这样做。你能帮我怎么做吗?
谢谢大家!

您可以使用下面的查询

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
请参阅下面的链接
您可以使用下面的查询

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
请参阅下面的链接

如果您在表2中有记录,但在表1中缺少记录,则您可以通过以下代码插入到表1中,除了@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

如果您在表2中有记录,但在表1中缺少记录,那么您可以通过以下代码插入到表1中,除了@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

可能重复的可能重复的如果要将所有记录从表2插入表1,可以使用insert select语句。我需要更新值,并且,如果记录在表2中但在表1中缺失,还应插入如果要将表2中的所有记录插入表1,可以使用insert select语句。我需要更新值,并且,如果记录在表2中但在表1中丢失,也应插入。谢谢!所以我会更新所有记录,然后运行你的代码谢谢!因此,我将更新所有记录,然后运行您的代码