Updateステートメントでテーブルエイリアスを使用する良い方法は?


95

SQL Serverを使用していて、同じテーブル内から行を更新しようとしています。読みやすくするためにテーブルのエイリアスを使用したいと思います。

これは私が今それをしている方法です:

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'

より簡単で良い方法はありますか?


1
読みやすくするために、オプションのキーワード "AS"(FROM dbo.Rates AS ra)を使用したいと思います。
ロバートS.

3
私は、適切なANSI JOIN構文を使用したいFROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID-それは、それが明確に標準だだし、それは....あなたのWHERE句で条件(複数可)を登録しよう忘れにより、不要なデカルト積を回避
marc_s

1
marc_sには良い点があります。私はJOIN構文を明確に使用するSQLを編集しました
realcals

回答:


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

これは、パフォーマンスの向上に役立つ場合があります。


2
なぜ??コスメ以外は何も変えなかった!
underscore_d

1

T-SQL(Microsoft SQL)の更新クエリのテーブルエイリアス。MS SQL Server 2008 R2の場合は問題なく動作します

UPDATE A_GeneralLedger  set ScheduleId=g.ScheduleId
from A_GeneralLedger l inner join A_AcGroup g on g.ACGroupID=l.AccountGroupID
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.