4

rownum在 Oracle 中,可以通过过滤“虚拟”列来限制任意查询中返回的行数。考虑以下示例,该示例最多返回 10 行。

SELECT * FROM all_tables WHERE rownum <= 10

在 Ingres 中是否有一种简单、通用的方法来做类似的事情?

4

4 回答 4

6

公然改变我的答案。“限制 10”适用于 MySql 和其他人,Ingres 使用

Select First 10 * from myTable

参考

于 2008-09-08T12:48:50.520 回答
2

select * from myTable limit 10 不起作用。

发现了一种可能的解决方案:

    TID 是“元组标识符”或行地址。TID 包含
    页码和相对于行的偏移量的索引
    页面边界。TID 目前实现为 4 字节整数。
    TID 唯一标识表中的每一行。每一行都有一个
    时间。TID 的高 23 位为页面的页码
    行发生的位置。TID 可以在 SQL 中通过名称来寻址
    “时间。”

因此,您可以使用以下方式限制返回的行数:

从 SomeTable 中选择 *,其中 tid < 2048

该方法返回的行数有些不精确。但这对我的要求很好,因为我只想限制从非常大的结果集中返回的行以加快测试速度。

于 2008-09-08T13:23:11.420 回答
0

嘿,克雷格。对不起,我做了一个忍者编辑。不,Limit 10 不起作用,我误以为这是大家都支持的标准 SQL。Ingres 使用(根据文档)“First”来解决问题。

于 2008-09-08T13:27:04.813 回答
0

嘿,来自斯德哥尔摩的忍者编辑!不用担心,已经确认“第一个 X”运行良好,并且是比我想出的更好的解决方案。谢谢!

于 2008-09-08T13:29:19.223 回答