2016-05-02 4 views
0

aktualisiert Ich möchte ein Update machen, wie folgt:eine UPDATE..SET mit Bezug auf die Tabelle Formulieren, die

Update Table_A As a 
set COLUMN_1= 
    (SELECT COLUMN_4 From TABLE_B as b 
     WHERE b.COLUMN_2 = a.COLUMN_3) 

aber ich benutze „Wie“ in der „UPDATE“ Linie nicht. Wie kann ich diese Art von Update durchführen?

EDIT: Mit dem inneren Join bekomme ich den Fehler "Die Konvertierung eines Varchar-Datentyps in einen Datetime-Datentyp führte zu einem Wert außerhalb des Bereichs." wenn Sie einem Datumswert einen Datumswert zuweisen ?! Führen Nullwerte zu diesem Problem? Unter Verwendung von IsDate() sind nur die Null-Werte Nicht-Datumswerte in der Quellspalte.

EDIT2:

Update a 
set a.COLUMN_1 = b.COLUMN_4 
from Table_A as a 
inner join TABLE_B as b on b.COLUMN_2 = a.COLUMN_3 
where b.COLUMN_5=17 and c.COLUMN_6 is not null 
+0

Überprüfen Sie die genauen Spalten, die den Fehler verursachen. Sie haben wahrscheinlich vergessen, eine der Spalten entweder in der SET-Anweisung oder im JOIN zu konvertieren. Bsp. Set COLUMN_1 = CAST (COLUMN_4 AS DATE) –

+0

Es ist keine Besetzung. Beide COLUMNS (Src und Dst) haben Typ Datum ..... mit Ausnahme der Null-Werte funktioniert auch nicht (wo isnull (COLUMN_SRC, '+') = '+') – MartinPosider234

+0

Können Sie eine neuere Version Ihrer Anweisung mit anonymen Spaltennamen? –

Antwort

0

verbinden Sie die Tabellen mit den entsprechenden Werten und verwenden den Alias ​​zu verweisen, welche Tabelle Sie aktualisieren möchten:

UPDATE a 
SET COLUMN_1 = b.COLUMN_4 
FROM Table_A AS a 
INNER JOIN TABLE_B AS b 
ON b.COLUMN_2 = a.COLUMN_3 
+1

Es ist eine grundlegende Update-Anweisung. Trotzdem war ich 11 sec schneller = P –

+0

Weil wir beide recht haben. Punkte für @RaulSebastian. :-) – nscheaffer

0

Try this ...

Update a 
set a.COLUMN_1 = b.COLUMN_4 
from Table_A as a 
inner join TABLE_B as b on b.COLUMN_2 = a.COLUMN_3 

Noel

0

Wenn Sie die Unterabfrage um jeden Preis verwenden möchten, sollten Sie anstelle des Aliasings den Tabellennamen selbst in der Abfrage in dieser Abfrage verwenden. Die Abfrage in der Frage wird übersetzt in als

Update Table_A 
set COLUMN_1= 
       (SELECT COLUMN_4 From TABLE_B as b 
       WEHERE b.COLUMN_2 = Table_A.COLUMN_3) 
Verwandte Themen