2014-01-20 214 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 
)