Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用其他表中的数据覆盖表行_Sql_Sql Server_Tsql_Sql Update - Fatal编程技术网

Sql 如何使用其他表中的数据覆盖表行

Sql 如何使用其他表中的数据覆盖表行,sql,sql-server,tsql,sql-update,Sql,Sql Server,Tsql,Sql Update,我想用表2中的其他行覆盖表1中的行,相同的数据库 例如,表1包含以下数据: COL1 | Col2 | Col3 | Col4 | Col5 | idDie ---------------------------------------------- 0001 | unknown | unknown | unknown | unknown | frKey1 0002 | unknown | unknown | unknown | unknown | frKey2 0003 | unkno

我想用表2中的其他行覆盖表1中的行,相同的数据库

例如,表1包含以下数据:

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
表2:

COL1 | Col4  | Col5 | Col6 | Col7
---------------------------------
0003 | value | value | value | value
0004 | value | value | value | value
0005 | value | value | value | value
因此,我想用表2中的数据覆盖表1中的默认数据(表2的列名与表1相同,但并非所有列都与表1相同!只有几列),范围为COL1>0002和COL1<0006

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

idDie | Col22 | Col33 | Col44


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

id为frKey3、frKey3和frKey4的模具也应被覆盖。表1中有一个引用外键,表2中的Col6和Col7信息是应该复制到表3中的信息


是否可以在一条sql语句中实现这一点

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

update t1
set
  t1.col4 = t2.col4,
  t1.col5 = t2.col5
from table1 t1
join table2 t2 on t1.col1 = t2.col1;
鉴于您的示例数据,更新后,表1将如下所示:

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

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

update t1
set
  t1.col4 = t2.col4,
  t1.col5 = t2.col5
from table1 t1
join table2 t2 on t1.col1 = t2.col1;
鉴于您的示例数据,更新后,表1将如下所示:

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

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

update t1
set
  t1.col4 = t2.col4,
  t1.col5 = t2.col5
from table1 t1
join table2 t2 on t1.col1 = t2.col1;
鉴于您的示例数据,更新后,表1将如下所示:

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

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

update t1
set
  t1.col4 = t2.col4,
  t1.col5 = t2.col5
from table1 t1
join table2 t2 on t1.col1 = t2.col1;
鉴于您的示例数据,更新后,表1将如下所示:

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


虽然数据库中存在表和所有列-->“无法绑定多部分标识符dbo.xxx$.col4”。@zelleb您是否像我一样为表使用别名?用于列的前缀必须与用于表的别名(如果有)匹配。我编辑了这个问题。。你有解决这个问题的办法吗?能在一条sql语句中完成所有这些吗?有什么办法可以实现吗?(使用表3编辑后)@zelleb不可能在同一update语句中将多个表指定为目标。您必须使用多个语句。有关更多信息,请参阅此问题:尽管数据库中存在表和所有列-->“多部分标识符”dbo.xxx$.col4“无法绑定。”@zelleb您是否像我一样为表使用别名?用于列的前缀必须与用于表的别名(如果有)匹配。我编辑了这个问题。。你有解决这个问题的办法吗?能在一条sql语句中完成所有这些吗?有什么办法可以实现吗?(使用表3编辑后)@zelleb不可能在同一update语句中将多个表指定为目标。您必须使用多个语句。有关更多信息,请参阅此问题:尽管数据库中存在表和所有列-->“多部分标识符”dbo.xxx$.col4“无法绑定。”@zelleb您是否像我一样为表使用别名?用于列的前缀必须与用于表的别名(如果有)匹配。我编辑了这个问题。。你有解决这个问题的办法吗?能在一条sql语句中完成所有这些吗?有什么办法可以实现吗?(使用表3编辑后)@zelleb不可能在同一update语句中将多个表指定为目标。您必须使用多个语句。有关更多信息,请参阅此问题:尽管数据库中存在表和所有列-->“多部分标识符”dbo.xxx$.col4“无法绑定。”@zelleb您是否像我一样为表使用别名?用于列的前缀必须与用于表的别名(如果有)匹配。我编辑了这个问题。。你有解决这个问题的办法吗?能在一条sql语句中完成所有这些吗?有什么办法可以实现吗?(使用表3编辑后)@zelleb不可能在同一update语句中将多个表指定为目标。您必须使用多个语句。有关更多信息,请参见此问题: