如何限制Ingres中任意查询的结果集大小?

时间:2008-09-08 12:47:27

标签: sql oracle ingres

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

SELECT * FROM all_tables WHERE rownum <= 10

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

4 个答案:

答案 0 :(得分:6)

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

Select First 10 * from myTable

Ref

答案 1 :(得分:2)

select * from myTable limit 10不起作用。

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

    TIDs are "tuple identifiers" or row addresses.  The TID contains the
    page number and the index of the offset to the row relative to the
    page boundary.  TIDs are presently implemented as 4-byte integers.
    The TID uniquely identifies each row in a table.  Every row has a
    TID.  The high-order 23 bits of the TID are the page number of the page
    in which the row occurs.  The TID can be addressed in SQL by the name 
    `tid.'

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

select * from SomeTable where tid < 2048

该方法在返回的行数方面有些不准确。这对我的要求很好,因为我只想限制从非常大的结果集返回的行来加速测试。

答案 2 :(得分:0)

嘿克雷格。对不起,我做了Ninja Edit。 不,限制10不起作用,我错误地认为它是每个人都支持的标准SQL。 Ingres使用(根据文档)“First”来解决问题。

答案 3 :(得分:0)

来自斯德哥尔摩的Hey Ninja编辑!不用担心,已经证实“第一个X”运行良好,并且比我提出的解决方案更好。三江源!