2009-08-13 5 views
0

ich habe zwei Tabellen: table_1 und table_2Aktualisierungstabelle Hilfe

table_1      table_2 
field_1 field_2    field_3  field_4 
1   a     1    
2   b     4 
3   c     3 
4   d     2 

jetzt brauche ich eine Abfrage-Update mit, so dass in table_2 i Werte in field_4 follwing haben:

table_2 
field_3 Field_4 
1    a 
4    d 
3    c 
2    b 

erhalten werden sollte, von update stainment in single query mit table_1 so, dass wenn field_3 von table_2 1 dann filed_4 sollte value equlas zu field_2, field_1 in table_1

Antwort

2

In SQL Server wäre es:

UPDATE table_2 
set field_4 = t1.field_2 
from table_2 t2 
    inner join table_1 t1 
    on t1.Field1 = t2.Field_3 

Dies setzt voraus, dass field_1 ein Primärschlüssel ist (hat eindeutige Werte). Alles in Tabelle 2, das nicht in Tabelle_1 gefunden wurde, wird nicht aktualisiert. Doppelte field_3-Werte in table_2 wären richtig gesetzt.

+0

Ich habe nicht versucht, aber in SQL Server ich denke, es _UPDATE T2_ sein muss –

+0

Es muss nicht sein, es sei denn die Tabelle aktualisiert wird auf sich selbst verbunden ist (UPDATE X von X innere Verbindung X), in diesem Fall wird es ein bisschen zu komplex, um in einer Kommentarbox zu diskutieren. –

+0

+1, ich habe es in beide Richtungen versucht: _UPDATE table_2_ und _UPDATE t2_ und beide funktionieren. Im Allgemeinen tendiere ich dazu, _UPDATE alias_ zu verwenden, wenn ich einen Alias ​​in einem verbundenen Update verwende. –

0

Ja, da Sie die Tabellen Aliasing, ich denke, er hat Recht. Die richtige Antwort wäre:

UPDATE t2 
     SET field_4 = t1.field_2 
     FROM table_2 t2 
     INNER JOIN 
      table_1 t1 
     ON t1.Field1 = t2.Field_3 
+0

danke, aber ich brauche update ststement ohne zu verwenden join plz Hilfe so bald wie möglich –