![](/img/trans.png)
[英]Update multiple columns based on values from other table in SQL Server
[英]Sql server update multiple columns from another table
我已经阅读了很多关于如何更新多列的帖子,但仍然找不到正确的答案。
我有一张桌子,我想从另一张桌子更新这张桌子。
Update table1
set (a,b,c,d,e,f,g,h,i,j,k)=(t2.a,t2.b,t2.c,t2.d,t2.e,t2.f,t2.g,t2.h,t2.i,t2.j,t2.k)
from
(
SELECT ..... with join ... where ....
) t2
where table1.id=table2.id
如果我只运行 select 语句(在括号之间),则脚本返回值但不使用更新
TSQL 不支持行值构造函数。 改用这个:
UPDATE table1
SET a = t2.a,
b = t2.b,
(...)
FROM
(
SELECT ..... with join ... WHERE ....
) t2
WHERE table1.id = table2.id
您不需要使用子查询,您也可以简单地执行以下操作....
Update t1
set t1.a = t2.a
,t1.b = t2.b
,t1.c = t2.c
,t1.d = t2.d
.......
from table1 t1
JOIN table2 t2 ON t1.id = t2.id
WHERE .......
上述解决方案仅适用于 MSSQL。 在 MySql 的情况下,您只需要先声明表
UPDATE
table1 t1 ,table2 t2
set
t1.field=t2.field
where
t1.id=t2.id;
在我的情况下,这有效..!!
UPDATE SET 命令隐式应用于由 指定的表,并且不可能在 SET 操作上指定该表。
编辑:仅指定要更新的列名,不提及表。
UPDATE table1
SET a = t2.a,
b = t2.b,
(...)
k = t2.k
FROM
(
SELECT ..... with join ... WHERE ....
) t2
WHERE table1.id = table2.id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.