1

我试图在我的条件返回结果时执行更新,问题是当我测试查询时它永远不会完成。这是查询;

While(select COUNT(*) from Agreement as agr where agr.Id in (
  select toa.Id from Agreement_TemporaryOnceAgreement as toa where toa.Executed =1)
and agr.EndingDate is null) > 0
begin
DECLARE @AgreementID int;
SET @AgreementID = 
(
select top 1 agr.id from Agreement as agr where agr.Id in (
  select toa.Id from Agreement_TemporaryOnceAgreement as toa where toa.Executed =1)
and agr.EndingDate is null
)
update Agreement SET EndingDate = (
  select tado.Date from TemporaryAgreementsDateOfExecution tado
    where tado.AgreementId = CAST(@AgreementID AS INT))
where Agreement.Id = CAST(@AgreementID AS INT);
end;
4

1 回答 1

0

你不需要循环。与此类似的单个更新查询应该可以完成工作。

update a
set EndingDate = tado.date
from Agreement a join TemporaryAgreementsDateOfExecution tado
on a.AgreementId = tado.AgreementId

join Agreement_TemporaryOnceAgreement toa
on a.Id = toa.id

where EndingDate is null
and toa.Executed = 1

根据您使用的 RDBMS,可能会有细微的变化。

于 2013-04-08T22:54:58.190 回答