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)를 사용하고 싶습니다.
Robert S.

4
적절한 ANSI JOIN 구문을 사용 FROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID합니다. 표준이고 더 명확하며 WHERE 절에서 JOIN 조건을 잊어 버림으로써 원치 않는 데카르트 곱을 방지합니다 ....
marc_s

1
marc_s는 좋은 지적이 있습니다. 더 명확한 JOIN 구문을 사용하도록 SQL을 편집했습니다
realcals

답변:


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

이는 성능 향상에 도움이 될 수 있습니다.


3
왜?? 당신은 화장품 외에는 아무것도 바꾸지 않았습니다!
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.