根据在 SQL Server 2008 中不相关的另一个表的值更新表列

本文关键字:另一个 更新 不相关 SQL Server 2008 | 更新日期: 2023-09-27 17:55:25

我有两个没有直接关系的表,比如...

表1

VoucherId  | VoucherDate
-----------+-------------
V001       | 2014-12-09
V002       | 2016-01-10

表2

FinYearRef | FromDate   | ToDate
-----------+------------+-----------
Y01        | 2014-07-01 | 2015-06-30
Y02        | 2015-07-01 | 2016-06-30

现在我向表 1 中添加了列FRef

我想按表 2 中的FinYearRef更新该FRef列,其中Table1.VoucherDate介于 Table2.FromDateTable2.ToDate 之间

根据在 SQL Server 2008 中不相关的另一个表的值更新表列

使用 Join 进行更新:

UPDATE T1
SET T1.FRef = T2.FinYearRef
FROM TABLE1 T1
JOIN TABLE2 T2
ON T1.VoucherDate BETWEEN T2.FromDate AND T2.ToDate

请注意,这将使用 T2 中的最后一个匹配项更新 FRef。如果你想要第一个值,那么:

UPDATE TABLE1
SET T1.FRef = 
(SELECT TOP 1 FinYearRef FROM TABLE2 
WHERE TABLE1.VoucherDate BETWEEN T2.FromDate AND T2.ToDate)