2017-03-04 1 views
2

Ich habe zwei TabellenUPDATE basierend auf, wenn der Wert in einer anderen Tabelle existiert

A Tabelle

Number 
111  
222  
333  
444  

Tabelle B

Number Another 
111  AAA 
222  BBB 
666  CCC 
777  DDD 

Was ich möchte, tun, ist ein Update anwenden Anweisung, die davon abhängt, ob der Wert "Number" in Tabelle B in Tabelle A vorhanden ist. Die Tabelle würde also ungefähr so ​​aussehen.

Number Another 
111  ZZZ 
222  ZZZ 
666  CCC 
777  DDD 

Ich weiß, ich brauche eine UPDATE-Abfrage zu verwenden, und wahrscheinlich eine Art von JOIN, aber ich bin nicht sicher, auf der Syntax.

Jede Hilfe sehr geschätzt.

Antwort

3

Ja. Sie müssen aktualisieren ein wie diese kommen mit:

update t2 
set t2.Another = 'ZZZ' 
from table1 t1 
join table2 t2 on t1.Number = t2.Number 
+0

Alle gute Antworten, aber dies ist die Methoden, die am besten für mein Szenario gearbeitet. Danke – user3580480

+0

Ich habe eine ähnliche Situation in meinen Händen. Wäre es möglich, dies zu verwenden, aber mit einer WHERE-Klausel am Ende, um t2-Einträge herauszufiltern, die ich nicht aktualisieren möchte? – user8675309

2

Sie können direkt von table1 und aktualisieren in table2 verwenden SELECT:

UPDATE table2 SET Another = 'ZZZ' 
FROM table1 t1 WHERE t1.Number = table2.Number 
1

Sie exists auch nutzen können.

Abfrage

update t1 
set t1.[Another] = 'ZZZ' 
from [TableB] t1 
where exists(
    select 1 from [TableA] t2 
    where t1.[Number] = t2.[Number] 
); 
Verwandte Themen