如何用来自其他 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
我想覆盖 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