risposta-alla-domanda-sullo-sviluppo-web-bd.com

Come scrivere UPDATE SQL con alias di tabella in SQL Server 2008?

Ho un UPDATE SQL molto semplice -

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

Questa query funziona correttamente in Oracle, Derby, MySQL - ma non riesce in SQL Server 2008 con il seguente errore:

"Messaggio 102, livello 15, stato 1, riga 1 Sintassi errata vicino a 'Q'."

Se rimuovo tutte le occorrenze dell'alias, "Q" da SQL allora funziona.

Ma devo usare l'alias.

179
javauser71

La sintassi per l'utilizzo di un alias in un'istruzione di aggiornamento su SQL Server è la seguente:

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

L'alias non dovrebbe essere necessario qui però.

356
Mark Byers

Puoi sempre adottare l'approccio CTE , (Common Tabular Expression).

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

UPDATE updateCTE
SET TITLE = 'TEST';
17
Ryk