错误类型:
Microsoft OLE DB Provider for SQL Server (0x80040E14)
除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
/cnblms/index_2/Order_show.asp, 第 94 行
上面是浏览器给出的错误。我是第一次转数据库,遇到这种情况还真不知道怎么下手,网上有好多都出现了这样的错误,可我看看不像我这种。求哪位好心人给出出注意!!贴出代码: sqlOrder1 ="SELECT Top 1 A.ProductionID, A.ProductionNO, A.Title, A.Price,A.Price1, A.Unit,O.OrderNO,O.OrderID,O.UpdateTime," 
    sqlOrder1 = sqlOrder1 & "O.PaymentMode, O.Num, O.UserID, A.Price*O.Num AS [Count],A.Price1*O.Num AS Count1,O.Memo, U.UserName,U.TrueName,U.MobilePhone,U.Phone,U.Address  "
    sqlOrder1 = sqlOrder1 & "FROM (Production AS A INNER JOIN [Order] AS O ON A.ProductionID = O.ProductionID) "
    sqlOrder1 = sqlOrder1 & "INNER JOIN [User] AS U ON (U.UserID = O.UserID) WHERE A.Deleted=0 AND O.OrderNO ='"& OrderNO &"' Order by O.OrderID desc"
Set rsOrder1 = server.CreateObject("Adodb.recordset")
rsOrder1.open sqlOrder1,conn2,1,1

sqlOrder2 = "Select Sum(Count) AS Total,Sum(Count1) AS Total1  FROM ("
sqlOrder2 = sqlOrder2 & "SELECT A.ProductionID, A.ProductionNO, A.Title, A.Price,A.Price1,A.Unit,O.OrderNO,O.OrderID,O.UpdateTime," 
    sqlOrder2 = sqlOrder2 & "O.PaymentMode, O.Num, O.UserID, A.Price*O.Num AS [Count],A.Price1*O.Num AS Count1,O.Memo, U.UserName,U.TrueName "
    sqlOrder2 = sqlOrder2 & "FROM (Production AS A INNER JOIN [Order] AS O ON A.ProductionID = O.ProductionID) "
    sqlOrder2 = sqlOrder2 & "INNER JOIN [User] AS U ON (U.UserID = O.UserID) WHERE A.Deleted=0 AND O.OrderNO ='"& OrderNO &"' Order by O.OrderID desc)"
Set rsOrder2 = server.CreateObject("Adodb.recordset")
rsOrder2.open sqlOrder2,conn2,1,1

解决方案 »

  1.   

    子查询中如果有top则这么写:select * from (select top 1 * from tb order by ...) t where ...
      

  2.   

    一楼说的对,我也是这么想的,可是在里面的select 加Top后竟然又语法报错了。我现在头都晕了。我自己现在反正是看不清了。麻烦帮帮忙看看。!!
    错误:
    错误类型:
    Microsoft OLE DB Provider for SQL Server (0x80040E14)
    第 1 行: ')' 附近有语法错误。
    /cnblms/index_2/Order_show.asp, 第 94 行
      

  3.   

    忘了贴上执行的SQL语句:
    补上Select Sum(Count) AS Total,Sum(Count1) AS Total1  FROM (SELECT top 1 A.ProductionID, A.ProductionNO, A.Title, A.Price,A.Price1,A.Unit,O.OrderNO,O.OrderID,O.UpdateTime,O.PaymentMode, O.Num, O.UserID, A.Price*O.Num AS [Count],A.Price1*O.Num AS Count1,O.Memo, U.UserName,U.TrueName FROM (Production AS A INNER JOIN [Order] AS O ON A.ProductionID = O.ProductionID) INNER JOIN [User] AS U ON (U.UserID = O.UserID) WHERE A.Deleted=0 AND O.OrderNO ='20091121110658' Order by O.OrderID desc)
    好心人帮忙看看