Sql server 2008 r2 不允许在Update语句中使用Order by
我试图根据内部连接条件设置一个标志,我需要在查询中使用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,
第二次尝试:
但都给了我同样的错误
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