it-swarm.com.de

Wie schreibe ich UPDATE SQL mit Tabellenalias in SQL Server 2008?

Ich habe ein sehr einfaches UPDATE SQL -

UPDATE HOLD_TABLE Q SET Q.TITLE = 'TEST' WHERE Q.ID = 101;

Diese Abfrage läuft gut in Oracle, Derby, MySQL - aber es schlägt in SQL Server 2008 fehl mit folgendem Fehler:

"Nachricht 102, Ebene 15, Status 1, Zeile 1 Falsche Syntax in der Nähe von" Q "."

Wenn ich alle Vorkommen des Alias ​​"Q" aus SQL entferne, funktioniert es.

Aber ich muss den Alias ​​verwenden.

186
javauser71

Die Syntax für die Verwendung eines Alias ​​in einer Update-Anweisung unter SQL Server lautet wie folgt:

UPDATE Q
SET Q.TITLE = 'TEST'
FROM HOLD_TABLE Q
WHERE Q.ID = 101;

Der Alias ​​sollte hier allerdings nicht notwendig sein.

367
Mark Byers

Sie können immer den Ansatz CTE , (Common Tabular Expression) verwenden.

;WITH updateCTE AS
(
    SELECT ID, TITLE 
    FROM HOLD_TABLE
    WHERE ID = 101
)

UPDATE updateCTE
SET TITLE = 'TEST';
17
Ryk