我有一个情节控制表和一张气象表。它们都由GeographicalPlotID字段链接。
我想在每个情节的WeatherDataPulled字段中插入天气表中该地块的最新值。
我有这个查询,它不起作用 - 多部分标识符无法绑定。我试过内联,没有运气。
insert into
ControlTable(WeatherDataPulled)
select
max(Time)
from WeatherData
where (ControlTable.PlotID = WeatherData.PlotID
and ControlTable.PlotID is not null)
联接看起来像这样:
inner join
WeatherData
on
ControlTable.PlotID = WeatherData.PlotID
知道我需要做些什么才能让它发挥作用?
答案 0 :(得分:1)
我认为您可能需要更新声明而不是插入声明 试试这个:
UPDATE ControlTable
SET WeatherDataPulled = MAX([TIME])
FROM ControlTable
INNER JOIN WeatherData ON ControlTable.PlotID = WeatherData.PlotID
答案 1 :(得分:1)
请注意,Zorah建议的方法会导致错误,因为聚合可能不会出现在UPDATE语句的集合列表中。
见这里:Update statement containing aggregate not working in SQL server
您的更新声明(如下面的答案所示)包含一个工作正常的子查询,因此是您问题的正确答案。
答案 2 :(得分:0)
正如佐哈指出的那样,我愚蠢地使用插入而不是更新。
使用它:
update
ControlTable
set WeatherDataPulled=
(select max(Time)
from
WeatherData
where
ControlTable.PlotID = WeatherData.PlotID)