2017-02-15 120 views
-1

我想在临时表@Users中更新USER_FNM,其值为BAUSER基于另一列更新一列中的值

@Users

DECLARE @USERS TABLE 
(
    USER_KEY INT, 
    USER_FNM VARCHAR(50), 
    USER_LNM VARCHAR(50), 
    USDE_HSU DECIMAL(8,2), 
    [110000003] DECIMAL(8,2), 
[120000002] DECIMAL(8,2), 
[120000003] DECIMAL(8,2) 
) 

我已经尝试过是这样的:

update @USERS 
set USER_FNM = (select top(1) user_fnm from bauser where bauser.user_key = USER_KEY) 

但这总是从BAUSER表中返回的第一个值。如何迭代每行@Users并更改USER_FNM

+0

上有[MSDN文章(https://msdn.microsoft.com/en-us/library/ms177523多个实例.aspx)为'UPDATE'语句。 –

+0

为什么downvoting? – FrenkyB

+0

因为简单的谷歌搜索'从另一个表中更新sql'会产生你可以使用的各种资源。 –

回答

1

SQL Server支持更新语句中的连接。
假设user_key在表bauser独特的,你可以简单地这样做:

UPDATE t 
SET USER_FNM = bauser.user_fnm 
FROM @Users t 
INNER JOIN bauser ON bauser.user_key = t.USER_KEY