2017-02-15 20 views
-1

Ich möchte USER_FNM in temporäre Tabelle @Users mit Werten aus Tabelle BAUSER aktualisieren.Werte in einer Spalte basierend auf einer anderen Spalte aktualisieren

Tabelle @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) 
) 

Was habe ich schon versucht, ist dies:

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

Aber dies immer der erste Wert von BAUSER Tabelle zurück. Wie man über jede Reihe von @Users iteriert und USER_FNM ändert?

+0

Es gibt mehrere Beispiele auf dem [MSDN-Artikel] (https://msdn.microsoft.com/en-us/library/ms177523 .aspx) für die Anweisung 'UPDATE'. –

+0

Warum abwählen? – FrenkyB

+0

Da eine einfache Google-Suche nach 'sql update from another table' verschiedene Quellen liefert, die Sie hätten verwenden können. –

Antwort

1

SQL Server unterstützt Joins in Aktualisierungsanweisungen.
user_key Unter der Annahme, ist einzigartig in der Tabelle bauser, können Sie einfach tun:

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