【问题标题】:Firebird SQL Nested SelectFirebird SQL 嵌套选择
【发布时间】:2014-01-20 16:07:21
【问题描述】:

我无法意识到我的查询有什么问题(Firebird 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 

感谢任何帮助!

【问题讨论】:

    标签: sql select nested firebird


    【解决方案1】:

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

    但是,由于 Firebird 1.5 允许 SELECT 语句出现在 WHERE 子句中,因此您的查询可以重写为:

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

    【讨论】:

      【解决方案2】:

      这是一个完美的 SQL 查询,所以它应该可以完美运行。我已经测试了相同的东西并且它有效。我的猜测是数据类型不允许使用比较或最大值。 (例如 column1 是一个 varchar 或非整数兼容的东西)

      【讨论】:

        【解决方案3】:

        SQL 没有FIRST 关键字,它使用TOP 关键字。完整的解释在这里

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

        火鸟:

        “在 MS SQL 7 及更高版本中,SELECT 子句可以使用 TOP 说明符来限制返回的行数。此功能目前正在为 Firebird 引擎开发中。”

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

        【讨论】:

        • 数据库不是 SQL Server,它的火鸟(如标题所示)
        猜你喜欢
        • 2020-12-07
        • 2010-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多