Gute Möglichkeit, Tabellenalias in Update-Anweisung zu verwenden?

95

Ich verwende SQL Server und versuche, Zeilen aus derselben Tabelle heraus zu aktualisieren. Ich möchte einen Tabellenalias für die Lesbarkeit verwenden.

So mache ich es im Moment:

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'

Gibt es einfachere / bessere Wege?

Realcals
quelle
1
Ich verwende gerne das optionale Schlüsselwort "AS" (FROM dbo.Rates AS ra) zur besseren Lesbarkeit.
Robert S.
3
Ich würde die richtige ANSI JOIN-Syntax verwenden FROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID- es ist der Standard, es ist klarer und es vermeidet unerwünschte kartesische Produkte, indem es die JOIN-Bedingung (en) in Ihrer WHERE-Klausel
vergisst
1
marc_s hat einen guten Punkt; Ich habe die SQL bearbeitet, um eine klarere JOIN-Syntax zu verwenden
Realcals

Antworten:

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';

Dies kann zur Verbesserung der Leistung beitragen.

Alexander
quelle
2
Warum?? Sie haben nichts außer Kosmetik geändert!
underscore_d
1

Tabellenalias in Update Query in T-SQL (Microsoft SQL). Für MS SQL Server 2008 R2 funktioniert es einwandfrei

UPDATE A_GeneralLedger  set ScheduleId=g.ScheduleId
from A_GeneralLedger l inner join A_AcGroup g on g.ACGroupID=l.AccountGroupID
Subhas Malik
quelle