Sql server 2008 r2 不允许在Update语句中使用Order by

Sql server 2008 r2 不允许在Update语句中使用Order by,sql-server-2008-r2,azure-sql-database,Sql Server 2008 R2,Azure Sql Database,我试图根据内部连接条件设置一个标志,我需要在查询中使用order by子句,因为我的条件依赖于具有特定字符串的最后一条记录,但这不能是表的最后一条,我尝试过的内容表示它不允许,所以我尝试过的内容似乎对我不起作用 第一次尝试: 第二次尝试: 但都给了我同样的错误 The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions,

我试图根据内部连接条件设置一个标志,我需要在查询中使用order by子句,因为我的条件依赖于具有特定字符串的最后一条记录,但这不能是表的最后一条,我尝试过的内容表示它不允许,所以我尝试过的内容似乎对我不起作用

第一次尝试:


第二次尝试


但都给了我同样的错误

The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified. 

我在这里遗漏了什么?

要想知道你想做什么有点难,显然我们没有你的桌子。但我想你想要的是:

.... (SELECT A.TESTINSTANCEID,A.REPORTEDTIME,
     ROW_NUMBER() OVER (PARTITION BY A.TESTINSTANCEID ORDER BY A.AUDITID DESC) as RN
...

) RES ON RES.TESTINSTANCEID=TI.TESTINSTANCEID AND
     RES.RN = 1 AND
     DATEDIFF (MINUTE, RES.REPORTEDTIME,  GETDATE())>=5
并从子查询中删除日期比较。基本上,使子查询对行进行适当的编号,以便在联接条件下,您可以只选择最新的行并使用该
REPORTEDTIME

The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified. 
.... (SELECT A.TESTINSTANCEID,A.REPORTEDTIME,
     ROW_NUMBER() OVER (PARTITION BY A.TESTINSTANCEID ORDER BY A.AUDITID DESC) as RN
...

) RES ON RES.TESTINSTANCEID=TI.TESTINSTANCEID AND
     RES.RN = 1 AND
     DATEDIFF (MINUTE, RES.REPORTEDTIME,  GETDATE())>=5