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

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

How to limit result set size for arbitrary query in Ingres?

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

1
SELECT * FROM all_tables WHERE rownum <= 10

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


公然改变我的答案。 Ingres使用的" Limit 10"适用于MySql等

1
SELECT FIRST 10 * FROM myTable

参考


从myTable选择*限制10不起作用。

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

1
2
3
4
5
6
7
    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.'

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

1
SELECT * FROM SomeTable WHERE tid < 2048

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


嘿Ninja来自斯德哥尔摩的编辑! 不用担心,已经证实" first X"可以很好地工作,并且比我想出的解决方案更好。 谢谢!


嘿,克雷格。 抱歉,我进行了忍者编辑。
不,限制10不起作用,我误以为它是每个人都支持的标准SQL。 Ingres使用(根据文档)" First"来解决该问题。


推荐阅读