是否有一种方法可以更新SQL server中的多个列,以插入语句的相同方式使用?

喜欢的东西:

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

或者类似的东西,而不是像这样:

update table set a=t2.a,b=t2.b etc 

如果你有100多个列,写起来会很累人。


当前回答

我在MySql中这样做了,它在单个记录中更新了多个列,所以如果你使用MySql作为服务器,请尝试一下:

"UPDATE creditor_tb SET credit_amount='" & CDbl(cur_amount) & "'
                   , totalamount_to_pay='" & current_total & "',   
        WHERE credit_id='" & lbcreditId.Text & "'". 

然而,我在vb.net中使用MySql服务器编码,但你可以把它带到你最喜欢的编程语言,只要你使用MySql作为你的服务器。

其他回答

“令人厌烦的方式”是标准SQL和主流RDBMS如何做到这一点。

对于100多个列,您很可能遇到了设计问题……此外,在客户端工具中(例如生成UPDATE语句)或使用orm也有缓解方法

这里有一个有效的方法:

UPDATE  `table_1`
INNER JOIN 
 `table_2` SET  col1= value, col2= val,col3= val,col4= val;

Value是table_2中的列

我在MySql中这样做了,它在单个记录中更新了多个列,所以如果你使用MySql作为服务器,请尝试一下:

"UPDATE creditor_tb SET credit_amount='" & CDbl(cur_amount) & "'
                   , totalamount_to_pay='" & current_total & "',   
        WHERE credit_id='" & lbcreditId.Text & "'". 

然而,我在vb.net中使用MySql服务器编码,但你可以把它带到你最喜欢的编程语言,只要你使用MySql作为你的服务器。

试试这个:

UPDATE table1 
SET a = t2.a, b = t2.b, .......
FROM table2 t2
WHERE table1.id = t2.id

这应该适用于大多数SQL方言,不包括Oracle。

是的,这需要大量的输入,这就是SQL的方式。

   UPDATE t1 
    SET 
    t1.a = t2.a,
    t1.b = t2.b,
    .
    .
    .


    FROM 
    table1 t1 
    INNER JOIN table2 t2 ON  t1.id=t2.id

你可以试试这个