Используя SqlServer и пытаясь обновить строки из той же таблицы. Я хочу использовать псевдоним таблицы для удобства чтения. Вот как я это делаю сейчас:
UPDATE ra
SET ra.ItemValue = rb.ItemValue
FROM dbo.Rates ra, dbo.Rates rb
WHERE ra.ResourceID = rb.ResourceID
AND ra.PriceSched = 't8'
AND rb.PriceSched = 't9'
Есть ли способы проще / лучше?
marc_s имеет хороший смысл; Я отредактировал SQL, чтобы использовать более четкий синтаксис JOIN
Мне нравится использовать необязательное ключевое слово «AS» (FROM dbo.Rates AS ra) для удобства чтения.





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';
Это может помочь повысить производительность.
Псевдоним таблицы в запросе на обновление в 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
Я бы использовал правильный синтаксис ANSI JOIN
FROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID- это стандарт, он более четкий и позволяет избежать любых нежелательных декартовых продуктов, забывая условие (я) JOIN в вашем предложении WHERE ....