【问题标题】:Firebird rownum *or* linq style skip and takeFirebird rownum * 或 * linq 样式跳过并采取
【发布时间】:2011-10-07 22:51:37
【问题描述】:

我使用的是 firebird 数据库,它似乎没有像 sql server 那样的 ROWNUM 或 ROW_NUMBER(),所以我无法按照here 解释的过程进行操作。

我有一个查询,其结果数据集大于我的系统内存可以容纳的容量。我正在尝试以较小的块加载数据集。我有一系列无法​​修改的通用查询,它们可以是任何东西。我知道我能做到

select first 5000 * from
(-my actual query here-)

获取前 5000 条记录。但是我怎样才能获得接下来的 5000 条记录。

谢谢

【问题讨论】:

    标签: sql tsql firebird firebird2.1


    【解决方案1】:

    由于支持 FireBird 2.0 ROWS 语法,即您将使用

    select * from tab ROWS m TO n
    

    我建议你下载 FB 的 language reference update 记录在哪里。

    【讨论】:

      【解决方案2】:

      在 firebird 中,您使用 Select First ? Skip ? 来指定数量以及您的偏移量。

      【讨论】:

      • 天哪!没想到会这么简单。这改变了一切!谢谢
      • 在子查询中小心使用first。有一个 documented bug 在 2.1 中未修复。
      • 在 Firebird 2.0 及更高版本中,兼容 SQL 的 ROWS 语法可用,应使用该语法代替 FIRST ... SKIP
      • @ain 除非你想 Select * skip 5000 from table。您不能使用行语法复制该行为。反正不是很常见。
      • @EMBarbosa 你有点可以;从文档中引用:“您通常可以通过提供第二个参数来“伪造它”,该参数您知道该参数大于集合中的行数。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      • 2012-03-23
      • 2011-04-21
      • 2011-07-18
      • 2011-03-11
      • 1970-01-01
      • 2015-05-16
      相关资源
      最近更新 更多