Joe*_*Joe 155 sql sql-server sql-update
有没有办法在SQL服务器中更新多个列,就像使用insert语句一样?
就像是:
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 table2 t2
where table1.id=table2.id
Run Code Online (Sandbox Code Playgroud)
或类似的东西,而不是像这样:
update table set a=t2.a,b=t2.b etc
Run Code Online (Sandbox Code Playgroud)
如果你有100多列,写起来可能很烦人.
mar*_*c_s 192
试试这个:
UPDATE table1
SET a = t2.a, b = t2.b, .......
FROM table2 t2
WHERE table1.id = t2.id
Run Code Online (Sandbox Code Playgroud)
这应该适用于大多数SQL方言,不包括Oracle.
是的 - 这是很多打字 - 这是SQL做到这一点的方式.
gbn*_*gbn 82
"厌倦的方式"是标准的SQL以及主流RDBMS如何做到这一点.
有100多列,你很可能有一个设计问题......还有,客户端工具中有缓解方法(例如生成UPDATE语句)或使用ORMs
Joh*_*Woo 18
您的查询几乎正确.这个T-SQL是:
UPDATE Table1
SET Field1 = Table2.Field1,
Field2 = Table2.Field2,
other columns...
FROM Table2
WHERE Table1.ID = Table2.ID
Run Code Online (Sandbox Code Playgroud)
bet*_*nzi 13
句法
UPDATE table-name
SET column-name = value, column-name = value, ...
WHERE condition
Run Code Online (Sandbox Code Playgroud)
例
UPDATE school
SET course = 'mysqli', teacher = 'Tanzania', student = 'you'
WHERE id = 6
Run Code Online (Sandbox Code Playgroud)
UPDATE t1
SET
t1.a = t2.a,
t1.b = t2.b,
.
.
.
FROM
table1 t1
INNER JOIN table2 t2 ON t1.id=t2.id
Run Code Online (Sandbox Code Playgroud)
你可以试试这个
我尝试过这种方式并且它工作正常:
UPDATE
Emp
SET
ID = 123,
Name = 'Peter'
FROM
Table_Name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
564143 次 |
| 最近记录: |