我正在使用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'
有更简单/更好的方法吗?
我正在使用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'
有更简单/更好的方法吗?
FROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID
-这是标准语法,更清晰,并且通过忘记WHERE子句中的JOIN条件,避免了任何不必要的笛卡尔积....
Answers:
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