简单的SQL查询但是感到困惑

时间:2010-10-14 12:58:31

标签: sql-server-2005 tsql

我正面临编写SQL查询的问题,这应该很容易我猜,但我无法专注于该查询。因此,从这个网站获得一些帮助。

问题:我有一个表“请求”,其中包含以下列 -

CreatedOn:当我创建新请求时,CreatedOn将填充当前日期时间

LastModifiedOn:当有人修改记录时,此字段将使用修改后的当前日期时间进行更新。默认情况下,这等于firstOn首次创建请求时。

现在要检查的逻辑是 - 最初请求状态是“已提交”。如果请求未在下一个10分钟或10分钟间隔内修改,则请求状态应更新为“已取消”。现在我无法了解如何编写此查询。

编辑:如果请求在任何10分钟间隔内被修改,那么我不想更新请求被取消。即一般情况下,我希望仅在最近10分钟内未修改记录时才更新状态

如果需要任何其他详细信息,请与我们联系。您可以假设还有一个唯一的RequestID列。

4 个答案:

答案 0 :(得分:4)

update Request 
set State = 'Cancelled' 
where RequestID = @MyRequestID
    and State = 'Submitted' 
    and LastModifiedOn < dateadd(mi, -10, getdate()) 

注意:此查询旨在SARGable,以便在功能中不使用LastModifiedOn以获得最佳效果。

答案 1 :(得分:1)

update Request 
set State='Cancelled' 
where State='Submitted' AND dateadd(mi, -10, GetDate()) < ModifiedOn

答案 2 :(得分:1)

更新请求 set State ='Canceled',LastModifiedOn = getdate() 其中State ='Submitted'和datediff(min,LastModifiedOn,getdate())&gt; 10

答案 3 :(得分:1)

您在寻找DateDiff吗?

DATEDIFF(minute, LastModifiedOn, getdate()) > 10