下班时遇到了个问题,没顾上解决,刚解决了。
问题:select count(*) from (select top 60 * from CNNC_ZhiBanBiao order by id desc) 在执行时发生错 误。
异常信息是:Description:System.Data.SqlClient.SqlException: 第 1 行: ')' 附近有语法错误。
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream) at System.Data.SqlClient.SqlCommand.ExecuteScalar()
我把sql语句拿到 MS SQL Server 2000 Enterprise Manager 的 SQL 窗格中调试时可以执行,发现 SQL 窗格执行后在将原始的 SQL 改动了,自动增加了一个 DERIVEDTBL 如下:
SELECT COUNT(*) AS Expr1 FROM
(SELECT TOP 60 * FROM CNNC_ZhiBanBiao ORDER BY id DESC) DERIVEDTBL
DERIVEDTBL ??什么意思?不过看到能执行也就没当回事,认为可能是MS SQL Server 2000自动给加的别名吧,应该没有关系的。可是问题也不可能出在别的方面啊,肯定还是sql语句的问题,折腾了一会还是不行,报着试试看的态度到查询分析器中执行(SQL 窗格中调试时可以执行,查询分析器应该也没问题吧),竟然出现了同样的错误提示!马上在sql语句后加上了DERIVEDTBL,ok了!我又试着改成其他随便的词(mm,gg)或者是as mm .....都可以执行!靠,DERIVEDTBL不是唬人的嘛!网上搜了搜,也就是说这是给括号中的内容加了一个别名,作为表的名字。看来这问题是比较基本的问题了,现在才知道,呜呜
转载于:https://www.cnblogs.com/mapk/archive/2007/06/28/799421.html