如何用来自其他 table 的数据覆盖 table 行

How to overwrite table-rows with data from other table

我想覆盖 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

所以我想用 table2 中的数据覆盖 table1 中的默认数据(table2 具有与 [=34 相同的列名,但不是所有列=]1!只有几列)在 COL1 > 0002 和 COL1 < 0006

的范围内

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

idDie | Col22 | Col33 | Col44


frKey1 |未知 |未知 |未知 密钥2 |未知 |未知 |未知 frKey3 |未知 |未知 |未知 frKey4 |未知 |未知 |未知 frKey5 |未知 |未知 |未知 frKey6 |未知 |未知 |未知

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

是否可以只用一个 sql 语句来做到这一点?

对于 SQL 服务器,您需要的更新查询是:

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