Un buon modo per utilizzare l'alias di tabella nell'istruzione Update?


95

Sto usando SQL Server e sto provando ad aggiornare le righe dalla stessa tabella. Voglio usare un alias di tabella per la leggibilità.

Questo è il modo in cui lo sto facendo al momento:

UPDATE ra
SET ra.ItemValue = rb.ItemValue
FROM dbo.Rates ra
INNER JOIN  dbo.Rates rb
ON ra.ResourceID = rb.ResourceID
WHERE ra.PriceSched = 't8'
AND rb.PriceSched = 't9'

Esistono modi più semplici / migliori?


1
Mi piace usare la parola chiave opzionale "AS" (FROM dbo.Rates AS ra) per la leggibilità.
Robert S.

3
Userei la sintassi ANSI JOIN corretta FROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID: è lo standard, è più chiaro ed evita qualsiasi prodotto cartesiano indesiderato dimenticando le condizioni JOIN nella clausola WHERE ...
marc_s

1
marc_s ha un buon punto; Ho modificato l'SQL per utilizzare una sintassi JOIN più chiara
realcals

Risposte:


46
UPDATE ra 
   SET ra.ItemValue = rb.ItemValue
  FROM dbo.Rates ra
 INNER JOIN dbo.Rates rb
         ON ra.ResourceID = rb.ResourceID
WHERE ra.PriceSched = 't8'
  AND rb.PriceSched = 't9';

Questo potrebbe aiutare a migliorare le prestazioni.


2
Perché?? Non hai cambiato nulla tranne i cosmetici!
underscore_d

1

Alias ​​di tabella in Update Query in T-SQL (Microsoft SQL). per MS SQL Server 2008 R2 funziona perfettamente

UPDATE A_GeneralLedger  set ScheduleId=g.ScheduleId
from A_GeneralLedger l inner join A_AcGroup g on g.ACGroupID=l.AccountGroupID
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.