2014-01-20 215 views
1

我无法意识到什么是错我的查询(火鸟SQL):火鸟SQL嵌套查询

select max(column1) from (select first 100 column1 from table1 where column1 > 0) p 

错误消息:

SQL Message : -104 
Invalid token 
Message: isc_dsql_prepare failed 
SQL Message : -104 
Invalid token 
Engine Code : 335544569 
Engine Message : 
Dynamic SQL Error 
SQL error code = -104 
Token unknown 

任何帮助表示赞赏!

回答

-2

SQL没有FIRST关键字它使用TOP关键字。这里充分说明

http://technet.microsoft.com/en-us/library/ms189463.aspx

火鸟:

“在MS SQL 7及以上,SELECT子句可以采取TOP符限制的行数返回此功能目前正在开发中。火鸟引擎“。

http://www.firebirdsql.org/manual/migration-mssql-syntax.html#migration-mssql-sql-cursors

+1

数据库不是SQL Server中,其火鸟(如标题所说) – user3215799

+0

我已经更新答案。 – 2014-01-20 17:49:37

0

这是一个完美的SQL查询,所以它应该很好地工作。我测试了一些相同的东西,它的工作原理。我的猜测是数据类型不允许使用比较或最大值。 (例如,column1是varchar或非整数兼容的)

2

嵌套SELECT查询(“SELECT from SELECT”)使用派生表,仅支持Firebird 2.0 and above

然而,由于火鸟1.5允许SELECT语句出现在WHERE子句中,查询可被改写为:

select max(column1) from table1 
where column1 in (
    select first 100 column1 from table1 
    where column1 > 0 
)