首页 > 解决方案 > 如何从 sql 中的用户定义表类型更新数据

问题描述

Update details 
  set details.a=a, details.b=b 
where Id=10 select a,b from @userdefinedtabletype

这里 id 对于所有记录都是唯一的

标签: sql-server

解决方案


由于您没有提供关于其中任何一个表的详细信息,我将假设您的用户定义表中只有一行。否则,您将获得查询返回的最后一个值。

所以我会使用 CROSS APPLY 来进行更新,例如:

Update details 
  set details.a=t2.a, details.b=t2.b 
from details t1
CROSS APPLY (select a,b from @userdefinedtabletype) t2
where t1.Id=10 

如果事实上这些表是通过某种 ID 关联的,那么您可能想要进行 INNER JOIN:

Update details 
  set details.a=t2.a, details.b=t2.b 
from details t1
INNER JOIN @userdefinedtabletype t2 on t1.id = t2.id
where t1.Id=10 

推荐阅读