Sql 从另一个表更新表,选择最新的';日期';对于每个供应商
我正在用Sql 从另一个表更新表,选择最新的';日期';对于每个供应商,sql,sql-server,Sql,Sql Server,我正在用SupplierB中的详细信息更新SupplierA SupplierB包含供应商提供的每个订单,但是,当我在SupplierA中插入时,我只希望每个供应商有一个实例,因此与订单关联的最新日期 目前我正在做这样的事情 UPDATE SupplierA SET LastSupplyDate = (SELECT [DATE] FROM SupplierB AS SB WHERE SB.Supplier COLLATE DATABASE_DEFAULT = SupplierA.SupNumbe
SupplierB
中的详细信息更新SupplierA
SupplierB
包含供应商提供的每个订单,但是,当我在SupplierA
中插入时,我只希望每个供应商有一个实例,因此与订单关联的最新日期
目前我正在做这样的事情
UPDATE SupplierA
SET LastSupplyDate = (SELECT [DATE] FROM SupplierB AS SB WHERE SB.Supplier COLLATE DATABASE_DEFAULT = SupplierA.SupNumber COLLATE DATABASE_DEFAULT)
WHERE [Site] = 2
显然,这会返回多个值,MAX()
是一个选项吗?如果被查询的列有索引(我想他的查询就是这样),TOP 1和MAX具有相同的性能我不反对使用TOP
(尽管它的可移植性较差)并且不认为这值得3次否决票,但语法无效,其中,如果查询列具有索引(我猜他的查询就是这样),TOP 1和MAX具有相同的性能我对使用TOP
(尽管它的可移植性较差)而且不认为这值得3次否决票,但语法无效,其中SB.Supplier ORDER BY
SET LastSupplyDate = (SELECT MAX([DATE])...
UPDATE SupplierA SET LastSupplyDate =
(
SELECT TOP 1 [DATE] FROM SupplierB AS SB
WHERE SB.Supplier
COLLATE DATABASE_DEFAULT = SupplierA.SupNumber COLLATE DATABASE_DEFAULT
ORDER BY [DATE] DESC
)
WHERE [Site] = 2
UPDATE SupplierA
SET LastSupplyDate = (SELECT MAX([DATE]) FROM SupplierB AS SB WHERE SB.Supplier COLLATE DATABASE_DEFAULT = SupplierA.SupNumber COLLATE DATABASE_DEFAULT)
WHERE [Site] = 2