Хороший спосіб використовувати псевдонім таблиці в операторі оновлення?


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) для читабельності.
Роберт С.

3
Я б використав правильний синтаксис ANSI JOIN FROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID- це стандарт, він чіткіший і дозволяє уникнути небажаних декартових продуктів, забувши умови JOIN у вашому реченні WHERE ....
marc_s

1
marc_s має хорошу думку; Я відредагував SQL, щоб використовувати більш чіткий синтаксис JOIN
реальні дані

Відповіді:


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.