在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.08年

4
我会使用正确的ANSI JOIN语法FROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID-这是标准语法,更清晰,并且通过忘记WHERE子句中的JOIN条件,避免了任何不必要的笛卡尔积....
marc_s

1
marc_s有一个好处。我已编辑SQL以使用更清晰的JOIN语法
realcals 2011年

Answers:


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.