sql-server - 除非还指定了 TOP 或 FOR XML,否则 ORDER BY 子句无效

标签 sql-server asp-classic

我得到“ORDER BY 子句在 View 、内联函数、派生表、子查询和公用表表达式中无效,除非还指定了 TOP 或 FOR XML。”以下代码出错。我最初有两个表:ADSAREAS 和 CATEGORIES。当我删除 CATEGORIES 表时,我开始收到此错误。

    Select Case SIDX  
     Case "ID" : SQLCONT1 = " AdsAreasID"
     Case "Page" : SQLCONT1 = " AdsAreasName"
     Case Else : SQLCONT1 = " AdsAreasID"  
End Select   
Select Case SORD  
     Case "asc" : SQLCONT2 = " ASC"
     Case "desc" : SQLCONT2 = " DESC"
     Case Else : SQLCONT2 = " ASC"  
End Select   
''# search feature --->
Select Case SEARCHFIELD  
     Case "ID" : SQLSFIELD = "AND AdsAreasID"
     Case "Ads Areas" : SQLSFIELD = "AND AdsAreasName"
     Case Else : SQLSFIELD = ""  
End Select  
Select Case SEARCHOPER  
     Case "eq" : SQLSOPER = " = " & SEARCHSTRING
     Case "ne" : SQLSOPER = " <> " & SEARCHSTRING
     Case "lt" : SQLSOPER = " <" & SEARCHSTRING
     Case "le" : SQLSOPER = " <= " & SEARCHSTRING    
     Case "gt" : SQLSOPER = " >" & SEARCHSTRING
     Case "ge" : SQLSOPER = " >= " & SEARCHSTRING
     Case "bw" : SQLSOPER = " LIKE '" & SEARCHSTRING & "%' "
     Case "ew" : SQLSOPER = " LIKE '%" & SEARCHSTRING & "' "
     Case "cn" : SQLSOPER = " LIKE '%" & SEARCHSTRING & "%' "
     Case Else : SQLSOPER = ""  
End Select  
''# search feature --->

SQL = "SELECT * FROM ( SELECT A.AdsAreasID, A.AdsAreasName, ROW_NUMBER() OVER (ORDER BY A.AdsAreasID) As Row"
SQL = SQL & " FROM ADSAREAS A"
SQL = SQL & " WHERE Row > ("& RecordsPageSize - RecordsPerPage &") AND Row <= ("& RecordsPageSize &") ORDER BY" & SQLCONT1 & SQLCONT2
Set objXML = objConn.Execute(SQL)

最佳答案

您在重写时将 ORDER BY 子句移至内部查询。在 WHERE 子句后添加括号(和标识符),以便 ORDER BY 适用于外部 SELECT。

SQL = "SELECT * FROM ( SELECT A.AdsAreasID, A.AdsAreasName, ROW_NUMBER() OVER (ORDER BY A.AdsAreasID) As Row"
SQL = SQL & " FROM ADSAREAS A"
SQL = SQL & " WHERE Row > ("& RecordsPageSize - RecordsPerPage &") AND Row <= ("& RecordsPageSize &")) inner ORDER BY" & SQLCONT1 & SQLCONT2

关于sql-server - 除非还指定了 TOP 或 FOR XML,否则 ORDER BY 子句无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2454195/

相关文章:

asp.net - 引用广告印象进行大规模 SQL 插入的最佳实践是什么?

sql-server - 从现有表创建表变量(或临时表)但带有额外的列

javascript - 在 asp-classic 中启用 javascript

http - 静态内容的 http header 中的 "Expires"?如何

javascript - 将 JavaScript 添加到经典 ASP(这是新的)

sql-server - 如何高效存储和查询十亿行传感器数据

sql - 使用递归 CTE 遍历父/子树?

php - 通过 Symfony2 配置 DBAL 以返回小写键

javascript - 用ASP写入JS文件

stored-procedures - ASP Classic - 记录集对象与命令对象