如何使用其他表

时间:2015-08-25 14:19:58

标签: sql sql-server tsql sql-update

我想覆盖table1中的行,与table2中的其他行覆盖相同的数据库。

例如,table1有以下数据:

COL1 | Col2  | Col3  | Col4  | Col5  | idDie
----------------------------------------------
0001 | unknown | unknown | unknown | unknown | frKey1
0002 | unknown | unknown | unknown | unknown | frKey2
0003 | unknown | unknown | unknown | unknown | frKey3
0004 | unknown | unknown | unknown | unknown | frKey4
0005 | unknown | unknown | unknown | unknown | frKey5
0006 | unknown | unknown | unknown | unknown | frKey6

和table2:

COL1 | Col4  | Col5 | Col6 | Col7
---------------------------------
0003 | value | value | value | value
0004 | value | value | value | value
0005 | value | value | value | value

所以我想覆盖table1中的默认数据,其中来自表2的数据(table2具有与table1相同的列名但不是所有列,只有几列),其中COL1> 0002和COL1< 0006

还有另一个table3,其形式如下:

idDie | Col22 | Col33 | Col44

frKey1 |未知|未知|未知    frKey2 |未知|未知|未知    frKey3 |未知|未知|未知    frKey4 |未知|未知|未知    frKey5 |未知|未知|未知    frKey6 |未知|未知|未知

具有id的frKey3,frKey3和frKey4的Dies也应该被覆盖。它们在table1中有一个引用外键,表2中的Col6和Col7信息是应该复制到table3的信息。

是否可以在一个sql语句中执行此操作?

1 个答案:

答案 0 :(得分:3)

对于SQL Server,您需要的更新查询是:

update t1
set
  t1.col4 = t2.col4,
  t1.col5 = t2.col5
from table1 t1
join table2 t2 on t1.col1 = t2.col1;

鉴于您的示例数据,Table1在更新后将如下所示:

COL1        Col2    Col3    Col4    Col5
----------- ------- ------- ------- -------
1           unknown unknown unknown unknown
2           unknown unknown unknown unknown
3           unknown unknown value   value
4           unknown unknown value   value
5           unknown unknown value   value
6           unknown unknown unknown unknown